일부 데이터를 대기열로 보내고 싶지만 errno S_objLib_OBJ_UNAVAILABLE (3997698)을 얻는 이유가 무엇인지 알 수 없습니다. 여기에 내가 무엇을 가지고 :왜 errno가 S_objLib_OBJ_UNAVAILABLE입니까?
static MSG_Q_ID bfd_to_alm_data = NULL;
// in bfd_queues_create(void)
if (!bfd_to_alm_data) {
bfd_to_alm_data = msgQCreate
(
MAX_BFD_MSGS, /* max messages that can be queued */
sizeof(bfd_report_t), /* max bytes in a message */
MSG_Q_FIFO /* message queue options */
);
if (!bfd_to_alm_data) {
printErrno(errno);
jpax_logMsg(LOG_ERROR, LOGSTREAM_SWITCH, "ERROR: Failed to create queue for bfd messages to alarm engine. errno %d\n",errno,0,0,0,0);
return ERROR;
}
// and this is where I get the error:
if (!bfd_to_alm_data)
rv = bfd_queues_create();
if (rv < 0) {
jpax_logMsg(LOG_ERROR, LOGSTREAM_SWITCH, "ERROR: Could not initialize bfd_to_alm_data! errcode %d \n",rv,0,0,0,0);
return;
}
rv = msgQSend(bfd_to_alm_data,
&bfd_info,
sizeof(bfd_report_t),
NO_WAIT,
MSG_PRI_NORMAL);
if (rv < 0) {
jpax_logMsg(LOG_ERROR, LOGSTREAM_SWITCH, "ERROR: Could not push Bfd alarm data onto queue! errno %d\n",errno,0,0,0,0);
}
무슨 일이 일어나고 있을까요?
내가 확인할 수는 Qeue 핸들 msgQCreate()
에 대한 호출하고, 우리가있을 때 그 errno는이 S_objLib_OBJ_UNAVAILABLE
으로 설정됩니다 볼 수 있습니다 (특히 커널 API 레퍼런스 가이드) 매뉴얼에서 msgQSend()
@TonyTannous 예,'#include "errno.h" – cerr
죄송합니다. 아무 생각 없습니다. –