Lines Matching refs:mqueueCB
113 STATIC INT32 DoMqueueDelete(struct mqarray *mqueueCB) in DoMqueueDelete() argument
119 if (mqueueCB->mq_name != NULL) { in DoMqueueDelete()
120 LOS_MemFree(OS_SYS_MEM_ADDR, mqueueCB->mq_name); in DoMqueueDelete()
121 mqueueCB->mq_name = NULL; in DoMqueueDelete()
124 mqueueCB->mqcb = NULL; in DoMqueueDelete()
126 mqueueCB->mode_data.data = 0; in DoMqueueDelete()
127 mqueueCB->euid = -1; in DoMqueueDelete()
128 mqueueCB->egid = -1; in DoMqueueDelete()
129 mqueueCB->mq_notify.pid = 0; in DoMqueueDelete()
131 ret = LOS_QueueDelete(mqueueCB->mq_id); in DoMqueueDelete()
147 STATIC int SaveMqueueName(const CHAR *mqName, struct mqarray *mqueueCB) in SaveMqueueName() argument
152 mqueueCB->mq_name = (char *)LOS_MemAlloc(OS_SYS_MEM_ADDR, nameLen + 1); in SaveMqueueName()
153 if (mqueueCB->mq_name == NULL) { in SaveMqueueName()
158 if (strncpy_s(mqueueCB->mq_name, (nameLen + 1), mqName, nameLen) != EOK) { in SaveMqueueName()
159 LOS_MemFree(OS_SYS_MEM_ADDR, mqueueCB->mq_name); in SaveMqueueName()
160 mqueueCB->mq_name = NULL; in SaveMqueueName()
164 mqueueCB->mq_name[nameLen] = '\0'; in SaveMqueueName()
168 STATIC VOID MqueueCBInit(struct mqarray *mqueueCB, const struct mq_attr *attr, INT32 openFlag, UINT… in MqueueCBInit() argument
170 mqueueCB->unlinkflag = FALSE; in MqueueCBInit()
171 mqueueCB->unlink_ref = 0; in MqueueCBInit()
172 mqueueCB->mq_personal->mq_status = MQ_USE_MAGIC; in MqueueCBInit()
173 mqueueCB->mq_personal->mq_next = NULL; in MqueueCBInit()
174 mqueueCB->mq_personal->mq_posixdes = mqueueCB; in MqueueCBInit()
175 …mqueueCB->mq_personal->mq_flags = (INT32)((UINT32)openFlag | ((UINT32)attr->mq_flags & (UINT32)FNO… in MqueueCBInit()
176 mqueueCB->mq_personal->mq_mode = mode; in MqueueCBInit()
177 mqueueCB->mq_personal->mq_refcount = 0; in MqueueCBInit()
178 mqueueCB->mq_notify.pid = 0; in MqueueCBInit()
183 struct mqarray *mqueueCB = NULL; in DoMqueueCreate() local
197 mqueueCB = &(IPC_QUEUE_TABLE[GET_QUEUE_INDEX(mqueueID)]); in DoMqueueCreate()
198 mqueueCB->mq_id = mqueueID; in DoMqueueCreate()
201 if (mqueueCB == NULL) { in DoMqueueCreate()
206 if (SaveMqueueName(mqName, mqueueCB) != LOS_OK) { in DoMqueueCreate()
210 if (GetMqueueCBByID(mqueueCB->mq_id, &(mqueueCB->mqcb)) != LOS_OK) { in DoMqueueCreate()
215 …mqueueCB->mq_personal = (struct mqpersonal *)LOS_MemAlloc(OS_SYS_MEM_ADDR, sizeof(struct mqpersona… in DoMqueueCreate()
216 if (mqueueCB->mq_personal == NULL) { in DoMqueueCreate()
217 (VOID)LOS_QueueDelete(mqueueCB->mq_id); in DoMqueueCreate()
218 mqueueCB->mqcb->queueHandle = NULL; in DoMqueueCreate()
219 mqueueCB->mqcb = NULL; in DoMqueueCreate()
224 MqueueCBInit(mqueueCB, attr, openFlag, mode); in DoMqueueCreate()
226 return mqueueCB->mq_personal; in DoMqueueCreate()
229 if ((mqueueCB != NULL) && (mqueueCB->mq_name != NULL)) { in DoMqueueCreate()
230 LOS_MemFree(OS_SYS_MEM_ADDR, mqueueCB->mq_name); in DoMqueueCreate()
231 mqueueCB->mq_name = NULL; in DoMqueueCreate()
239 STATIC struct mqpersonal *DoMqueueOpen(struct mqarray *mqueueCB, INT32 openFlag) in DoMqueueOpen() argument
244 if (mqueueCB->unlinkflag == TRUE) { in DoMqueueOpen()
255 privateMqPersonal->mq_next = mqueueCB->mq_personal; in DoMqueueOpen()
256 mqueueCB->mq_personal = privateMqPersonal; in DoMqueueOpen()
258 privateMqPersonal->mq_posixdes = mqueueCB; in DoMqueueOpen()
271 struct mqarray *mqueueCB = NULL; in DoMqueueClose() local
274 mqueueCB = privateMqPersonal->mq_posixdes; in DoMqueueClose()
275 if (mqueueCB == NULL || mqueueCB->mq_personal == NULL) { in DoMqueueClose()
281 if (mqueueCB->mq_personal == privateMqPersonal) { in DoMqueueClose()
282 mqueueCB->mq_personal = privateMqPersonal->mq_next; in DoMqueueClose()
284 for (tmp = mqueueCB->mq_personal; tmp->mq_next != NULL; tmp = tmp->mq_next) { in DoMqueueClose()
301 if ((mqueueCB->unlinkflag == TRUE) && (mqueueCB->mq_personal == NULL)) { in DoMqueueClose()
302 return DoMqueueDelete(mqueueCB); in DoMqueueClose()
359 struct mqarray *mqueueCB = NULL; in MqueueRefer() local
368 mqueueCB = privateMqPersonal->mq_posixdes; in MqueueRefer()
369 if (mqueueCB == NULL) { in MqueueRefer()
381 struct mqarray *mqueueCB = NULL; in MqTryClose() local
382 mqueueCB = privateMqPersonal->mq_posixdes; in MqTryClose()
383 if (mqueueCB == NULL) { in MqTryClose()
401 struct mqarray *mqueueCB = NULL; in MqueueModeAnalysisSet() local
407 mqueueCB = privateMqPersonal->mq_posixdes; in MqueueModeAnalysisSet()
408 if (mqueueCB == NULL) { in MqueueModeAnalysisSet()
413 mode = mqueueCB->mq_personal->mq_mode; in MqueueModeAnalysisSet()
417 mqueueCB->euid = user->effUserID; in MqueueModeAnalysisSet()
418 mqueueCB->egid = user->effGid; in MqueueModeAnalysisSet()
423 mqueueCB->mode_data.usr |= S_IRUSR; in MqueueModeAnalysisSet()
426 mqueueCB->mode_data.usr |= S_IWUSR; in MqueueModeAnalysisSet()
429 mqueueCB->mode_data.grp |= S_IRGRP; in MqueueModeAnalysisSet()
432 mqueueCB->mode_data.grp |= S_IWGRP; in MqueueModeAnalysisSet()
435 mqueueCB->mode_data.oth |= S_IROTH; in MqueueModeAnalysisSet()
438 mqueueCB->mode_data.oth |= S_IWOTH; in MqueueModeAnalysisSet()
443 STATIC INT32 GetPermissionOfVisitor(struct mqarray *mqueueCB) in GetPermissionOfVisitor() argument
450 if (mqueueCB == NULL) { in GetPermissionOfVisitor()
466 if (euid == mqueueCB->euid) { /* usr */ in GetPermissionOfVisitor()
467 if (!((mqueueCB->mode_data.usr & S_IRUSR) || (mqueueCB->mode_data.usr & S_IWUSR))) { in GetPermissionOfVisitor()
471 } else if (egid == mqueueCB->egid) { /* grp */ in GetPermissionOfVisitor()
472 if (!((mqueueCB->mode_data.grp & S_IRGRP) || (mqueueCB->mode_data.grp & S_IWGRP))) { in GetPermissionOfVisitor()
477 if (!((mqueueCB->mode_data.oth & S_IROTH) || (mqueueCB->mode_data.oth & S_IWOTH))) { in GetPermissionOfVisitor()
506 struct mqarray *mqueueCB = NULL; in mq_open() local
520 mqueueCB = GetMqueueCBByName(mqName); in mq_open()
522 if (mqueueCB != NULL) { in mq_open()
527 privateMqPersonal = DoMqueueOpen(mqueueCB, openFlag); in mq_open()
547 if (GetPermissionOfVisitor(mqueueCB)) { in mq_open()
550 privateMqPersonal = DoMqueueOpen(mqueueCB, openFlag); in mq_open()
604 struct mqarray *mqueueCB = NULL; in OsMqGetAttr() local
624 mqueueCB = privateMqPersonal->mq_posixdes; in OsMqGetAttr()
625 mqAttr->mq_maxmsg = mqueueCB->mqcb->queueLen; in OsMqGetAttr()
626 mqAttr->mq_msgsize = mqueueCB->mqcb->queueSize - sizeof(UINT32); in OsMqGetAttr()
627 mqAttr->mq_curmsgs = mqueueCB->mqcb->readWriteableCnt[OS_QUEUE_READ]; in OsMqGetAttr()
677 struct mqarray *mqueueCB = NULL; in mq_unlink() local
684 mqueueCB = GetMqueueCBByName(mqName); in mq_unlink()
685 if (mqueueCB == NULL) { in mq_unlink()
690 if (mqueueCB->mq_personal != NULL) { in mq_unlink()
691 mqueueCB->unlinkflag = TRUE; in mq_unlink()
692 } else if (mqueueCB->unlink_ref == 0) { in mq_unlink()
693 ret = DoMqueueDelete(mqueueCB); in mq_unlink()
742 static void MqSendNotify(struct mqarray *mqueueCB) in MqSendNotify() argument
744 struct mqnotify *mqnotify = &mqueueCB->mq_notify; in MqSendNotify()
746 if ((mqnotify->pid) && (mqueueCB->mqcb->readWriteableCnt[OS_QUEUE_READ] == 0)) { in MqSendNotify()
782 struct mqarray *mqueueCB = NULL; in mq_timedsend() local
793 mqueueCB = privateMqPersonal->mq_posixdes; in mq_timedsend()
794 …OS_MQ_GOTO_ERROUT_UNLOCK_IF(msgLen > (size_t)(mqueueCB->mqcb->queueSize - sizeof(UINT32)), EMSGSIZ… in mq_timedsend()
801 mqueueID = mqueueCB->mq_id; in mq_timedsend()
804 if (LOS_ListEmpty(&mqueueCB->mqcb->readWriteList[OS_QUEUE_READ])) { in mq_timedsend()
805 MqSendNotify(mqueueCB); in mq_timedsend()
825 struct mqarray *mqueueCB = NULL; in mq_timedreceive() local
843 mqueueCB = privateMqPersonal->mq_posixdes; in mq_timedreceive()
844 if (msgLen < (size_t)(mqueueCB->mqcb->queueSize - sizeof(UINT32))) { in mq_timedreceive()
859 mqueueID = mqueueCB->mq_id; in mq_timedreceive()
911 struct mqarray *mqueueCB = NULL; in OsMqNotify() local
930 mqueueCB = privateMqPersonal->mq_posixdes; in OsMqNotify()
931 mqnotify = &mqueueCB->mq_notify; in OsMqNotify()
972 struct mqarray *mqueueCB = &(queueTable[index]); in OsMqueueCBDestroy() local
973 if (mqueueCB->mq_name == NULL) { in OsMqueueCBDestroy()
976 (VOID)DoMqueueClose(mqueueCB->mq_personal); in OsMqueueCBDestroy()