客戶端和服務器在rt linux中的通信。客戶端正在發送數據,服務器是接收者.UDP用於客戶端和服務器之間的通信。 當服務器(rt linux)從客戶端接收到數據時,內核應該停止它正在執行的操作並開始執行新到達的數據。我想計算在內核(時間戳)中發生中斷的時間。 在rt-linux中,所有的操作系統操作都發生在內核中。所以我正在計算內核源代碼中的中斷時間。所以我修改了位於/usr/src/linux-version/net/core/dev.c中的內核源代碼,如下所示: 我正在計算時間並將其存儲在緩衝區skb中。如何在rt linux中通過用戶程序訪問或接收來自內核的數據?
//此代碼位於網絡設備驅動程序級別。
int netif_rx(struct sk_buff *skb)
{
__net_timestamp(skb);//I modify the code in kernel to get the timestamp and store in buffer
}
//將數據存儲到緩衝器內核將其發送給像IP,UDP,INET和最後內核空間的插座中的上層之後。
但我想通過用戶空間從內核空間讀取時間戳包。即我的程序。
我正在使用recvfrom api接收來自內核的數據。內核正在發送時間戳。
問題:有人能告訴我如何通過用戶程序從內核空間接收數據?
是的!我正在分析中斷延遲。即中斷髮生的時間和內核開始調度的時間。 – user3458454
函數ktime_get_real(); //我將在網絡設備驅動程序級別獲取時間戳。稍後我想將時間戳傳送到用戶空間。我的問題:如何將這個時間戳從內核發送到用戶空間? – user3458454
我不知道,至少沒有比那些已經爲你回答類似問題的人更好。建議procfs的想法聽起來不錯。除此之外,還有netlink套接字,sysfs和其他許多方式。我以爲你的問題是關於網絡數據發送/接收時間戳。 – thuovila