[問題] read driverDescript
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
問題(Question):
請教各位版友, 我在kernel層有個讀寫URB封包的driver.
而想在User層每隔約10ms的迴圈,讀取一次封包內容
然而當執行read後, 迴圈的間隔時間從10ms被拉到1s的等級
我也試過select的寫法, 但是依舊迴圈間隔被拉長
請問這是怎麼一回事呢? 謝謝
程式碼(Code):(請善用置底文網頁, 記得排版)
#define QSI_UsbDevPath "/dev/test0"
int main(void)
{
int fID,ack;
time_t lt;
unsigned char AAA[256];
fID=open(QSI_UsbDevPath, (O_RDWR|O_NONBLOCK));
while(1){
lt =time(NULL);
printf("T=%d\r\n",lt);
ack=read(fID, AAA, 1);
usleep(10000);
}
return 0;
}
補充說明(Supplement):
select的寫法:
FD_ZERO(&event_fds);
FD_SET(fID,&event_fds);
tv.tv_sec = 0;
tv_usec = 1000;
fID=open(QSI_UsbDevPath, (O_RDWR|O_NONBLOCK));
while(1){
lt =time(NULL);
printf("T=%d\r\n",lt);
usleep(10000);
if(select(fID+1, &event_fds, NULL, NULL, &tv)>0)
{
memset(DevData.recv_buffer, 0, MAX_RECV_SIZE);
ack = read(DevData.fd, buffer, 1);
}
else
{
FD_ZERO(&event_fds);
FD_SET(fID,&event_fds);
tv.tv_sec = 0;
tv_usec = 1000;
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.179.30
※ 編輯: newranger 來自: 59.120.179.30 (07/31 11:56)
→
07/31 18:31, , 1F
07/31 18:31, 1F
→
07/31 18:32, , 2F
07/31 18:32, 2F
→
07/31 18:33, , 3F
07/31 18:33, 3F
→
07/31 23:00, , 4F
07/31 23:00, 4F
→
08/01 00:48, , 5F
08/01 00:48, 5F
→
08/01 00:48, , 6F
08/01 00:48, 6F
→
08/01 00:48, , 7F
08/01 00:48, 7F
→
08/01 00:49, , 8F
08/01 00:49, 8F
→
08/01 00:49, , 9F
08/01 00:49, 9F
→
08/01 00:49, , 10F
08/01 00:49, 10F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章