Re: [閒聊] 大家公司會有喜歡分享知識的人嗎

看板Soft_Job作者 (rawpacket)時間14年前 (2011/11/20 23:03), 編輯推噓3(3012)
留言15則, 2人參與, 最新討論串15/17 (看更多)
※ 引述《ggg12345 (ggg)》之銘言: : : 當 receive packet 常常會當掉. : : 找到最後是少下二個指令, sti 和 cli. : : 這很重要嗎? 不, 一點也不, 雖然花了很多時間, 但是一點也不重要 : : 分享的結果大家要嘛都是早知道, 要就是無所謂. : 細問一下, 能把情況環境說得更清楚嗎? : 這個是在 protection mode 時代之前, 還是之後的故事? : window95 之後, 像 packet driver 之類的就很難隨意掛上去. : network NAT 流行應該是 window9X 年代. 若只說 少了 cli sti : 指令, 聽的人能抓住要害嗎? 有聽能懂的會很多嗎? 我那時候己經有 Windows 95 了, 不過寫專題控制環境 當時在 DOS 下使用網卡的 Packet driver 收 Packet . 至少所有的 Packet 可以自己處理, 做轉址做 UDP 收送沒有什麼問題. 當時會這樣做的原因是, DOS 下其實並沒有什麼 OS 的概念, 這一部 份 DOS 不會幫你處理掉, 所以在我們的程式內仍然要做這件事情 至於 Windows 95 的話, 我寧願用 Linux 吧, 至少目前正在搞的也是類似的東西. 如果今天還要自己刻的話, 在 netif_rx 和 netif_receive_skb + 寫一個 virtual interface 有自己的 xmit 這樣會容易很多. : 這不應該說是不重要的問題或方法. 這根本是涉及 driver 的重要 : 功能--中斷的及時處理及不當的干擾. 剛剛翻了一下 Linux 這邊的做法, 看起來應該都不是做全系統的 local_irq_disable 而是偏向 disable device 的 irq mask 和 unmask . sti/cli 看起來是做其他部份, 大家有空好好追 code ;p : 在現在的 window os/linux os, user mode 程式是無法下這兩個 : 指令的, 但難道不會碰上同樣問題. 可以寫個 polling 程式呀, 要不然 message box . Virtualization driver . 都會用到類似的技巧. (如果 Virtualization 沒有 HW 支援時) : 這種答法, 好像跟沒講差不多. 但會的, 不講還是猜得到. 這不太 : 像教導學習. 或許給 source code 去試是最現實的分享? 那醜堪骯髒的 DOS source code 應該要埋起來. 千百年後如果有外星人找到, 應該會被困惑, 我們怎麼可以寫出這麼爛的東西. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.22.92

11/21 01:01, , 1F
沒有cli是會掉封包還是當掉?若是當掉靠加cli應會掉封包.
11/21 01:01, 1F

11/21 02:04, , 2F
記得是當掉. sti/cli 是成對的, 當初也沒有 sample code
11/21 02:04, 2F

11/21 02:05, , 3F
講到這個東西, 就是找到沒有東西可以找了, 才隨手試其他
11/21 02:05, 3F

11/21 02:05, , 4F
方向.
11/21 02:05, 4F

11/21 07:55, , 5F
加上cli/sti後,不再當機.但是不是加快速度下就會掉封包?
11/21 07:55, 5F

11/21 08:20, , 6F
印像中當時的確是有這樣的狀況, 不過我以為是我的程式
11/21 08:20, 6F

11/21 08:21, , 7F
邏輯有問題, 那時用 Pentium II 450 應該只能跑到 10MB
11/21 08:21, 7F

11/21 08:21, , 8F
左右的速度
11/21 08:21, 8F

11/21 09:14, , 9F
謝謝說明!處理NAT封包時,是cli先做,處理完後才sti嗎?
11/21 09:14, 9F

11/21 23:53, , 10F
處理 NAT 不用呀,進ISR 用 sti, 出用 cli, 應該是這樣吧
11/21 23:53, 10F

11/21 23:53, , 11F
真的太久了 ^^
11/21 23:53, 11F

11/22 01:21, , 12F
您回想一下,說個道理.您的NAT處理是塞在ISR裡面剪開串接?
11/22 01:21, 12F

11/23 02:12, , 13F
這部份真的忘了, 剛剛要找舊程式也找不到 .....
11/23 02:12, 13F

11/23 02:24, , 14F
剛剛看了以前的 slide, ISR 內應該只是標記 packet
11/23 02:24, 14F

11/23 02:24, , 15F
其他的再用一個 BIG loop 去處理.
11/23 02:24, 15F
文章代碼(AID): #1EoHR3fB (Soft_Job)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 15 之 17 篇):
文章代碼(AID): #1EoHR3fB (Soft_Job)