亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4637 | 回復(fù): 9
打印 上一主題 下一主題

[函數(shù)] 請教:lib庫函數(shù)怎么調(diào)用內(nèi)核函數(shù)的。 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2006-08-16 09:07 |只看該作者 |倒序瀏覽

  1. int
  2. __connect (fd, addr, len)
  3.      int fd;
  4.      __CONST_SOCKADDR_ARG addr;
  5.      socklen_t len;
  6. {
  7.   __set_errno (ENOSYS);
  8.   return -1;
  9. }
  10. weak_alias (__connect, connect)

復(fù)制代碼

以上是libc庫中connect.c文件關(guān)于connect 的函數(shù)實(shí)現(xiàn)。


可我不明白這個函數(shù)除了設(shè)置錯誤代碼并返回-1外,什么都沒做。這樣應(yīng)用程序在調(diào)用connect 是豈不是沒做syn的發(fā)送嗎 ?
那位高手指點(diǎn)一下

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
2 [報告]
發(fā)表于 2006-08-16 10:44 |只看該作者
你沒找對地方。
肯定不是這里。

論壇徽章:
0
3 [報告]
發(fā)表于 2006-08-16 17:37 |只看該作者
int
__connect (fd, addr, len)
     int fd;
     __CONST_SOCKADDR_ARG addr;
     socklen_t len;
{
  __set_errno (ENOSYS);
  return -1;
}
weak_alias (__connect, connect)

不知道你看的是什么庫的實(shí)現(xiàn),或者找到的是哪一部分。你貼出來這部分的調(diào)用,直接返回ENOSYS。
一般unix/linux下面,x86的CPU上,系統(tǒng)調(diào)用都是實(shí)現(xiàn)為一個軟中斷, 好像是int 80, EAX填系統(tǒng)調(diào)用號

論壇徽章:
0
4 [報告]
發(fā)表于 2006-08-17 00:14 |只看該作者
我以前也瀏覽到這個地方,我找不到別的定義.后來也就不找了
系統(tǒng)調(diào)用一般都是匯編寫好的吧,系統(tǒng)調(diào)用的處理代碼會處理內(nèi)核的返回值,并且根據(jù)它去設(shè)置errno

論壇徽章:
0
5 [報告]
發(fā)表于 2006-08-17 00:29 |只看該作者
Linux的話,
  1. int 0x80
復(fù)制代碼

論壇徽章:
0
6 [報告]
發(fā)表于 2006-08-17 01:04 |只看該作者
原帖由 JohnBull 于 2006-8-17 00:29 發(fā)表
Linux的話,
  1. int 0x80
復(fù)制代碼

LZ就是想知道這個int 0x80在哪
我一直沒有找到libc系統(tǒng)調(diào)用定義的地方

論壇徽章:
0
7 [報告]
發(fā)表于 2006-08-17 04:37 |只看該作者
weak_alias 這種 ld 魔法……
Glibc 的源碼是出奇難懂的東西。

論壇徽章:
0
8 [報告]
發(fā)表于 2006-08-17 14:45 |只看該作者
找到glibc-2.4/sysdeps/mach/hurd/conenct.c文件

  1. int
  2. __connect (int fd, __CONST_SOCKADDR_ARG addrarg, socklen_t len)
  3. {
  4.   error_t err;
  5.   addr_port_t aport;
  6.   const struct sockaddr_un *addr = addrarg.__sockaddr_un__;

  7.   if (addr->sun_family == AF_LOCAL)
  8.     {
  9.       /* For the local domain, we must look up the name as a file and talk
  10.          to it with the ifsock protocol.  */
  11.       file_t file = __file_name_lookup (addr->sun_path, 0, 0);
  12.       if (file == MACH_PORT_NULL)
  13.         return -1;
  14.       err = __ifsock_getsockaddr (file, &aport);
  15.       __mach_port_deallocate (__mach_task_self (), file);
  16.       if (err == MIG_BAD_ID || err == EOPNOTSUPP)
  17.         /* The file did not grok the ifsock protocol.  */
  18.         err = ENOTSOCK;
  19.       if (err)
  20.         return __hurd_fail (err);
  21.     }
  22.   else
  23.     err = EIEIO;

  24.   err = HURD_DPORT_USE (fd,
  25.                         ({
  26.                           if (err)
  27.                             err = __socket_create_address (port,
  28.                                                            addr->sun_family,
  29.                                                            (char *) addr, len,
  30.                                                            &aport);
  31.                           if (! err)
  32.                             {
  33.                               err = __socket_connect (port, aport);
  34.                               __mach_port_deallocate (__mach_task_self (),
  35.                                                       aport);
  36.                             }
  37.                           err;
  38.                         }));

  39.   return err ? __hurd_dfail (fd, err) : 0;
  40. }
復(fù)制代碼

可__socket_create_address函數(shù)  __socket_connect 函數(shù)就找不到,郁悶,查了內(nèi)核代碼,也沒找到。

論壇徽章:
0
9 [報告]
發(fā)表于 2006-08-17 14:52 |只看該作者
原想通過了解庫函數(shù)connect的實(shí)現(xiàn)為切入點(diǎn),來進(jìn)一步學(xué)習(xí)內(nèi)核都做了些什么的。希望能得到大家的幫助。

論壇徽章:
0
10 [報告]
發(fā)表于 2006-08-17 15:24 |只看該作者
去找connect的實(shí)現(xiàn)
這只是weak_alias,在connect沒有實(shí)現(xiàn)的時候會把connect鏈接到這個函數(shù)。
找個利索點(diǎn)的C庫看吧.
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP