Lines Matching refs:msg_queue
43 static void remove_notification(mqueue_object *msg_queue);
44 static void remove_mq(mqueue_object *msg_queue);
61 mqueue_object *msg_queue; in mq_open() local
91 msg_queue = find_in_list(name); in mq_open()
94 if ((msg_queue != NULL) && (oflags & O_CREAT) != 0 && in mq_open()
101 if ((msg_queue == NULL) && (oflags & O_CREAT) == 0) { in mq_open()
117 if (msg_queue == NULL) { in mq_open()
128 msg_queue = (mqueue_object *)mq_obj_ptr; in mq_open()
129 msg_queue->mem_obj = mq_obj_ptr; in mq_open()
138 msg_queue->name = mq_name_ptr; in mq_open()
144 strcpy(msg_queue->name, name); in mq_open()
150 msg_queue->mem_buffer = mq_buf_ptr; in mq_open()
155 (void)atomic_set(&msg_queue->ref_count, 1); in mq_open()
157 k_msgq_init(&msg_queue->queue, msg_queue->mem_buffer, msg_size, in mq_open()
160 sys_slist_append(&mq_list, (sys_snode_t *)&(msg_queue->snode)); in mq_open()
164 atomic_inc(&msg_queue->ref_count); in mq_open()
167 msg_queue_desc->mqueue = msg_queue; in mq_open()
214 mqueue_object *msg_queue; in mq_unlink() local
217 msg_queue = find_in_list(name); in mq_unlink()
219 if (msg_queue == NULL) { in mq_unlink()
225 k_free(msg_queue->name); in mq_unlink()
226 msg_queue->name = NULL; in mq_unlink()
228 remove_mq(msg_queue); in mq_unlink()
364 mqueue_object *msg_queue = mqd->mqueue; in mq_notify() local
367 if ((msg_queue->not.sigev_notify & SIGEV_MASK) == 0) { in mq_notify()
371 remove_notification(msg_queue); in mq_notify()
375 if ((msg_queue->not.sigev_notify & SIGEV_MASK) != 0) { in mq_notify()
393 memcpy(&msg_queue->not, notification, sizeof(struct sigevent)); in mq_notify()
421 mqueue_object *msg_queue; in find_in_list() local
426 msg_queue = (mqueue_object *)mq; in find_in_list()
427 if (strcmp(msg_queue->name, name) == 0) { in find_in_list()
428 return msg_queue; in find_in_list()
509 static void remove_mq(mqueue_object *msg_queue) in remove_mq() argument
511 if (atomic_cas(&msg_queue->ref_count, 0, 0)) { in remove_mq()
513 sys_slist_find_and_remove(&mq_list, (sys_snode_t *) msg_queue); in remove_mq()
517 k_free(msg_queue->mem_buffer); in remove_mq()
518 k_free(msg_queue->mem_obj); in remove_mq()
522 static void remove_notification(mqueue_object *msg_queue) in remove_notification() argument
525 memset(&msg_queue->not, 0, sizeof(struct sigevent)); in remove_notification()