• Home
  • Raw
  • Download

Lines Matching refs:msgq

50     _msgq_hdr_t *msgq;  in msgQCreate()  local
54 msgq = (_msgq_hdr_t *) malloc((size_t)msgq_size); in msgQCreate()
56 if (msgq) { in msgQCreate()
57 memset((char *) msgq, 0, (size_t)msgq_size); in msgQCreate()
58 msgq->msgq_id = (msg_q_id) msgq; in msgQCreate()
59 msgq->max_msgs = max_msgs; in msgQCreate()
60 msgq->max_msg_length = max_msg_length; in msgQCreate()
61 msgq->num_msgs = 0; in msgQCreate()
64 pthread_mutexattr_init(&(msgq->mutexattr)); in msgQCreate()
65 pthread_mutexattr_settype(&(msgq->mutexattr), PTHREAD_MUTEX_RECURSIVE_NP); in msgQCreate()
66 pthread_mutex_init(&msgq->mutex, &msgq->mutexattr); in msgQCreate()
69 msgq->sem_ptr = &msgq->sem_count; in msgQCreate()
70 sem_init(msgq->sem_ptr, 0, 0); // PRIVATE, EMPTY in msgQCreate()
72 msgq->read_offset = 0; in msgQCreate()
73 msgq->write_offset = 0; in msgQCreate()
75 return ((msg_q_id) msgq); in msgQCreate()
79 _msgq_hdr_t *msgq = (msg_q_id) msgQ; in msgQDelete() local
81 if (msgq) { in msgQDelete()
82 pthread_mutex_lock(&(msgq->mutex)); in msgQDelete()
83 if (msgq->num_msgs) { in msgQDelete()
84 LOGE("Warning msgQDelete() called on queue with %d messages", msgq->num_msgs); in msgQDelete()
87 sem_destroy(&(msgq->sem_count)); in msgQDelete()
88 pthread_mutex_unlock(&(msgq->mutex)); in msgQDelete()
89 pthread_mutex_destroy(&(msgq->mutex)); in msgQDelete()
90 free((void *) msgq); in msgQDelete()
92 return (msgq ? OK : ERROR); in msgQDelete()
97 _msgq_hdr_t *msgq = (msg_q_id) msgQ; in msgQSend() local
102 if (msgq && (timeout == NO_WAIT) && (priority == MSG_Q_FIFO)) { in msgQSend()
103 pthread_mutex_lock(&(msgq->mutex)); in msgQSend()
106 if ((nbytes <= msgq->max_msg_length) && (msgq->num_msgs < msgq->max_msgs)) { in msgQSend()
107 msg_loc = (char *) msgq + sizeof(_msgq_hdr_t) + in msgQSend()
108 (msgq->write_offset * msgq->max_msg_length); in msgQSend()
110 msgq->write_offset = (msgq->write_offset + 1) % msgq->max_msgs; in msgQSend()
111 msgq->num_msgs++; in msgQSend()
112 sem_post(msgq->sem_ptr); in msgQSend()
116 pthread_mutex_unlock(&(msgq->mutex)); in msgQSend()
122 _msgq_hdr_t *msgq = (msg_q_id) msgQ; in msgQReceive() local
126 if (msgq && buffer && ((timeout == WAIT_FOREVER) || (timeout == NO_WAIT))) { in msgQReceive()
128 result = (status_t) sem_wait(msgq->sem_ptr); in msgQReceive()
131 result = (status_t) sem_trywait(msgq->sem_ptr); in msgQReceive()
135 pthread_mutex_lock(&(msgq->mutex)); in msgQReceive()
137 msg_loc = (char *) msgq + sizeof(_msgq_hdr_t) + in msgQReceive()
138 (msgq->read_offset * msgq->max_msg_length); in msgQReceive()
140 msgq->read_offset = (msgq->read_offset + 1) % msgq->max_msgs; in msgQReceive()
141 msgq->num_msgs--; in msgQReceive()
142 pthread_mutex_unlock(&(msgq->mutex)); in msgQReceive()
149 _msgq_hdr_t *msgq = (msg_q_id) msgQ; in msgQNumMsgs() local
152 if (msgq) { in msgQNumMsgs()
153 pthread_mutex_lock(&(msgq->mutex)); in msgQNumMsgs()
154 num_msgs = msgq->num_msgs; in msgQNumMsgs()
155 pthread_mutex_unlock(&(msgq->mutex)); in msgQNumMsgs()