add c-to-c message passing function