Linux-syscalls这个模块主要是定义了一些系统调用和一些常量,这样做主要是为了弥补一些较旧的glibc没有提供比如inotify等等头文件的缺点。当然它不会去实现这些系统调用。
从代码上看,它屏蔽了不同的cpu架构,对外提供统一的接口。这些接口,有套接字相关的、epoll相关的、inotify相关、读写相关、管道相关等等。
系统调用 | 接口 |
__NR_socketcall | Socket函数 |
__NR_accept4 | Accept函数 |
__NR_eventfd | Eventfd函数 |
__NR_eventfd2 | epoll_create1 |
__NR_epoll_create | epoll_create |
__NR_epoll_create1 | epoll_create1 |
__NR_epoll_ctl | epoll_ctl |
__NR_epoll_wait | epoll_wait |
__NR_epoll_pwait | epoll_pwait |
__NR_inotify_init | inotify_init |
__NR_inotify_init1 | inotify_init1 |
__NR_inotify_add_watch | inotify_add_watch |
__NR_inotify_rm_watch | inotify_rm_watch |
__NR_pipe2 | pipe2 |
__NR_recvmmsg | recvmmsg |
__NR_sendmmsg | sendmmsg |
__NR_utimensat | utimensat |
__NR_preadv | preadv |
__NR_pwritev | pwritev |
__NR_dup3 | dup3 |
基本可以从系统调用中看出其对应的库函数来。
关于系统调用的一些资料可以参考
http://blog.csdn.net/absurd/article/details/1656944
http://blog.csdn.net/b02042236/article/details/6136598
这里就不复制了。
关于inotify 文件系统变化通知可以参考以下内容:
http://www.ibm.com/developerworks/cn/linux/l-inotifynew/
linux-inotify.c文件主要实现借助inotify来对fs事件进行管理。它使用了红黑树来管理同一个loop的watch descriptor,快速高效的实现对watch descriptor存取工作。整体实现流程函数比较清晰明了的。
本人享有博客文章的版权,转载请标明出处http://blog.csdn.net/baidu20008