我計算如下dev.c內核源代碼的中斷時間:如何從用戶空間應用程序接收來自內核空間的數據?
extern double InterruptTime;
InterruptTime = ktime_get_real(); //timestamp
我使用的procfs寫入從內核空間數據到用戶空間,並使用下面的API在內核空間用於將數據發送到用戶空間。 PROCFS.c:
struct device {
double array[100];
}chr_arr;
ssize_t dev_read(struct file *filp,const char *buf,size_t count,loff_t *offset)
{
int len;
chr_arr.array =InterruptTime; // Is this possible ??
len = count >= strlen(chr_arr.array) ? strlen(chr_arr.array) : count;
*offset += len;
if (*offset >= strlen(chr_arr.array))
return 0;
if (copy_to_user(buf,chr_arr.array,len))
return -EFAULT;
return len;
}
是有可能在從PROCFS.c dev.c讀取InterruptTime如上所示?? 如何在用戶端接收上面內核代碼發送的數據(即InterruptTime)?
你返回到用戶空間的代碼是什麼?每次只讀一個'char'? – JimmyB
InterruptTime是我的代碼中的時間戳。我想將InterruptTime返回給用戶。 – user3458454
那麼'InterruptTime'是什麼類型? 'extern char InterruptTime'表明它只是一個字符。你在你的chr_arr中緩存了多個字符還是隻緩存一個字符? - 或者,更具體地說,sizeof(InterruptTime)'是什麼? – JimmyB