Linux kernel 套接字函数定义?

Linux kernel 套接字函数定义?,linux-kernel,Linux Kernel,在阅读C源代码时,我看到了用于打开连接的socket函数。当我使用grep在Linux内核源代码(版本3及以上)中搜索socket的定义时,我可以找到更多对socket的调用,但找不到定义 插座的定义在哪里?它是在以太网卡的源代码中定义的吗?socket()函数不是一个内核函数,它是一个libc函数 如果您想学习socket()内部代码,请获取glibc(或标准C库的任何实现)的代码,而不是内核代码 如果您打算更深入地研究内核如何实现套接字机制,请查找系统调用sys\u socketcall()

在阅读C源代码时,我看到了用于打开连接的
socket
函数。当我使用
grep
在Linux内核源代码(版本3及以上)中搜索
socket
的定义时,我可以找到更多对
socket
的调用,但找不到定义

插座的定义在哪里?它是在以太网卡的源代码中定义的吗?

socket()函数不是一个内核函数,它是一个
libc
函数

如果您想学习
socket()
内部代码,请获取
glibc
(或标准C库的任何实现)的代码,而不是内核代码


如果您打算更深入地研究内核如何实现套接字机制,请查找系统调用
sys\u socketcall()

,我意识到这个线程很古老,但实际上我必须查找它,因为我正在处理一个10Gb/s的安全堆栈,需要知道它是如何实现的。我在这里找到了来源:

“你的回答可以帮助大多数学生了解通过我公司的软件建立连接的情况。”为什么你需要了解功能的定义?虽然我也质疑你的意图,这里有一个比任何不能使用谷歌的人都需要的更深入的链接:谢谢你问这个问题!这正是我想要的。这不完全是真的-socket()是一个内核调用而不是libc调用,它的手册页在第2节(内核)而不是第3节(libc)中,因为它的行为是由内核定义的,而不是由C库定义的,所以应该在内核代码中查找。libc中只包含几行代码,这些代码实现了调用它所需的特定于平台的系统调用机制,并为配置异常的系统设置了一些陷阱。