This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

求助:有关DVSDK DM368 的mq_open的errno=38的错误



大家好,

    遇到一个奇怪的问题,麻烦大家指导下,谢谢。:)

    (1)我在DM368的ti-dvsdk_dm368-evm_4_02_00_06/上开发程序,需要用到消息队列。

    (2)但是,程序在mq_open时,返回告警38,也就是  #define ENOSYS 38 /* Function not implemented */

Open MsgQueue error!t
he errno = 38

   (3)这个定义理解是没实现。但是,在编译链接时也没有告警。arm工具链对应的librt定义如下后面所列出。

    (4)相同的代码在服务器编译,执行,当然没有问题。

将实验代码简化如下:

#include <stdio.h>
#include <unistd.h>
#include "ushellagent.h"
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <mqueue.h>
#include <errno.h>

/*****************************************************************************
* filename : ushellver
* function : ushellver
* author version date note
* feller 1.0 20150928 create
******************************************************************************/
int ushellver( int a , int b )
{
printf( USHELLAGENT_VER );
return 0;
}

/*****************************************************************************
* filename : main
* function : main
* author version date note
* feller 1.0 20150728 create
******************************************************************************/

int main( void )
{
int a = 0x35;
int b = 0xfe;
int iReturn = -1;

ushellver( a, b );
// = ushell_init();
//attr.mq_maxmsg = IPC_MSG_NUM;
//attr.mq_msgsize = IPC_MSG_LENTH;
iReturn = mq_open("/ushell_test", O_RDONLY | O_CREAT,666,NULL);
if ((mqd_t)-1 == iReturn)
{
printf("Open MsgQueue error!");
printf( "the errno = %d\n", errno );
//return iResult;
}
if( 0 == iReturn )
{
printf( "\nushell_init ok (~!~)\n" );
}
else
{
printf( "\nushell_init error\n" );
return 0;
}
while(1)
{
usleep(1000000);
}
return 0;
}

(7)ARM交叉工具链的librt库定义

./arm-none-linux-gnueabi/libc/thumb2/lib/librt.so.1
./arm-none-linux-gnueabi/libc/thumb2/lib/librt-2.8.so
./arm-none-linux-gnueabi/libc/thumb2/usr/lib/librt.so
./arm-none-linux-gnueabi/libc/thumb2/usr/lib/librt.a
./arm-none-linux-gnueabi/libc/lib/librt.so.1
./arm-none-linux-gnueabi/libc/lib/librt-2.8.so
./arm-none-linux-gnueabi/libc/armv4t/lib/librt.so.1
./arm-none-linux-gnueabi/libc/armv4t/lib/librt-2.8.so
./arm-none-linux-gnueabi/libc/armv4t/usr/lib/librt.so
./arm-none-linux-gnueabi/libc/armv4t/usr/lib/librt.a
./arm-none-linux-gnueabi/libc/usr/lib/librt.so
./arm-none-linux-gnueabi/libc/usr/lib/librt.a