void testq_post(){ MSG_BUF testmsg; char temp[80] = {0}; int len = 0; memset(&testmsg, 0, sizeof(testmsg)); testmsg.key = 0x5000; testmsg.type = 0x9; testmsg.ret_id = 0x5800; testmsg.type = 0x9; testmsg.waiting = 0; gets(temp); len = strlen(temp); memmove(testmsg.data, temp, len); testmsg.len = sizeof(MSG_BUF) - sizeof(testmsg.data) + len + 1; printf("testmsg.len is %d", testmsg.len); printf("string length is %d\n", len); if (q_post(&testmsg) <0) return; printf("\nend test_post\n"); }
#include "mqueue.h" int mq_init(mqueue *q) { /*{{{*/ q_init(&q->q); if (q->flag == 0) { pthread_mutex_init(&q->m, NULL); pthread_cond_init(&q->c, NULL); } q->flag = 1; } /*}}}*/ int mq_post(mqueue *q, int data0, void *data1) { /*{{{*/ pthread_mutex_lock(&q->m); q_post(&q->q, data0, data1); pthread_cond_broadcast(&q->c); pthread_mutex_unlock(&q->m); } /*}}}*/