【发布时间】:2014-05-05 02:56:46
【问题描述】:
中断是在内核模式下处理的,但要在 rt linux 中处理中断,他们是这样说的:
我需要在内核空间和内核模块中使用 RTLinux 编写代码。使用 QNX,您无法编写内核模块(内核未打开),并且您在用户空间中具有实时性。
我的问题: 如何在内核空间编写代码? 那到底是什么意思? 我应该在哪里修改内核??
有人请提出一些想法。
udp 代码:
int CreateSocket()
{
socklen_t len;
// Socket creation for UDP
acceptSocket=socket(AF_INET,SOCK_DGRAM,0);
if(acceptSocket==-1)
{
printf("Failure: socket creation is failed, failure code\n");
return 1;
}
else
{
printf("Socket started!\n");
}
memset(&addr, 0, sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_port=htons(port);
addr.sin_addr.s_addr=htonl(INADDR_ANY);
rc=bind(acceptSocket,(struct sockaddr*)&addr,sizeof(addr));
if(rc== -1)
{
printf("Oh dear, something went wrong with bind()! %s\n", strerror(errno));
return 1;
}
else
{
printf("Socket an port %d \n",port);
}
while(rc!=-1)
{
len = sizeof(client);
rc=recvfrom(acceptSocket,buf, 256, 0, (struct sockaddr*) &client, &len);
//I am calculating the time here
InterruptTime = GetTimeStamp();
measurements[17] = InterruptTime;
if(rc==0)
{
printf("Server has no connection..\n");
break;
}
if(rc==-1)
{
printf("Oh dear, something went wrong with read()! %s\n", strerror(errno));
break;
}
XcpIp_RxCallback( (uint16) rc, (uint8*) buf, (uint16) port );
}
close(acceptSocket);
return 1;
}
int main()
{
CreateSocket();
while(1)
{
TASK1(Task2ms_Raster);
TASK2(Task10ms_Raster);
TASK3(Task100ms_Raster);
}
【问题讨论】:
标签: c linux linux-kernel kernel real-time