因為家裡在重新裝潢
所以今天再把所有的舊東西全部整理一次
找到了好多許久沒見到的東西
以前看過的書
重考時買的CD
聯考成績單 ( <-這個最虎爛 我完全不記得我有留下來)
國中畢冊 ( 那時候還蠻可愛的 :$ 可是也很欠打 )
一些久遠的雜誌
- linux journal中文版 可惜停刊了
- linuxer
- palmtop!!!!!!!!!!!!!!!!!
(昨天才找某個從良的敗家男聊天的說..今天就找到回憶了..XD)
可口可樂的Call機 ( 喝了好多罐可樂才換到的...:$ )
還有很多要收起來的東西
人越大 不想去回想到的東西越多...
Saturday, April 30, 2005
Wednesday, April 27, 2005
塞格門佛特,摳鄧普, 與 克諾盤尼克
這幾天為了接待幾位好朋友弄到快瘋了
一開始只是老板要我加個新數據 (=.= 明明就很麻煩 還硬是要我弄)
我很開心的想到了一個好方法然後把程式寫好就開始生數據了
這時 第一個好朋友來找我了 =.=
這個好朋友相信也很很多人跟他瞞熟的
他很愛跟別人裝熟
可是大家都很討厭他
他就是"塞格門佛特"(Segment Fault)
他帶著他的問題來找我
我卻也束手無策
只好找來另一個好朋友叫做
"摳鄧普" (Core Dump)
來幫忙解決問題
於是乎這幾日我都跟他們兩個在一起 (我也不想ㄚ)
每天都要看他們兩個看個幾十次
終於
剛剛我把塞格們的問題解決了
正在高興的時候
另一個好朋友又來了
這個好朋友叫做.....
"克諾盤尼克" (Kernel Panic)
..................
雖然兩個都不好
可是我還是比較喜歡塞格門....
盤尼克幹嘛來ㄚ....棍....><
--
哀 bug 滴不盡...春風吹又生...
一開始只是老板要我加個新數據 (=.= 明明就很麻煩 還硬是要我弄)
我很開心的想到了一個好方法然後把程式寫好就開始生數據了
這時 第一個好朋友來找我了 =.=
這個好朋友相信也很很多人跟他瞞熟的
他很愛跟別人裝熟
可是大家都很討厭他
他就是"塞格門佛特"(Segment Fault)
他帶著他的問題來找我
我卻也束手無策
只好找來另一個好朋友叫做
"摳鄧普" (Core Dump)
來幫忙解決問題
於是乎這幾日我都跟他們兩個在一起 (我也不想ㄚ)
每天都要看他們兩個看個幾十次
終於
剛剛我把塞格們的問題解決了
正在高興的時候
另一個好朋友又來了
這個好朋友叫做.....
"克諾盤尼克" (Kernel Panic)
..................
雖然兩個都不好
可是我還是比較喜歡塞格門....
盤尼克幹嘛來ㄚ....棍....><
--
哀 bug 滴不盡...春風吹又生...
Thursday, April 21, 2005
Linux Kernel Socket
這陣子由於某些特殊需要
所以找了些資料如何在kernel寫socket programming...
(其實在kernel作這種事情是不道德的...小孩子千萬不要亂用喔...叔叔是有練過的)
大致上是要利用kernel裡面的struct sock直接使用
sock_create(PF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock);
sock->ops->bind ( sock, (struct sockaddr*) &sin2, sizeof(cmdsin));
sock_release(sock);
上面是幾個比較簡單的setup function
然後要send的話就使用
struct msghdr msg;
struct iovec iov;
iov.iov_base=buf;
iov.iov_len=count;
msg.msg_iov=&iov;
msg.msg_iovlen=1;
msg.msg_control=NULL;
msg.msg_controllen=0;
msg.msg_name = (struct sockaddr*)&sin;
msg.msg_namelen = sizeof(sin);
msg.msg_flags = 0;//MSG_DONTWAIT;
sock_sendmsg(sock,&msg,count);
如果想要送的東西並不是從user level傳下來的...
就必須改成
oldseg= get_fs();
set_fs (KERNEL_DS);
// send process.......
set_fs (oldseg);
至於recieve我還在檢查packet究竟掉在那裡...orz
所以找了些資料如何在kernel寫socket programming...
(其實在kernel作這種事情是不道德的...小孩子千萬不要亂用喔...叔叔是有練過的)
大致上是要利用kernel裡面的struct sock直接使用
sock_create(PF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock);
sock->ops->bind ( sock, (struct sockaddr*) &sin2, sizeof(cmdsin));
sock_release(sock);
上面是幾個比較簡單的setup function
然後要send的話就使用
struct msghdr msg;
struct iovec iov;
iov.iov_base=buf;
iov.iov_len=count;
msg.msg_iov=&iov;
msg.msg_iovlen=1;
msg.msg_control=NULL;
msg.msg_controllen=0;
msg.msg_name = (struct sockaddr*)&sin;
msg.msg_namelen = sizeof(sin);
msg.msg_flags = 0;//MSG_DONTWAIT;
sock_sendmsg(sock,&msg,count);
如果想要送的東西並不是從user level傳下來的...
就必須改成
oldseg= get_fs();
set_fs (KERNEL_DS);
// send process.......
set_fs (oldseg);
至於recieve我還在檢查packet究竟掉在那裡...orz