Tag: xnu

Mac OS X:内核扩展获得TCP连接的tcpcb结构如何?

我想提供一个用户空间函数,通过实现内核扩展来获取TCP连接统计信息。 从检查TCP源代码,我看到tcpcp结构包含这样的统计信息。 在给定来自用户空间的套接字句柄的情况下,如何通过内核扩展获取关联的tcpcb结构并将统计信息返回给用户空间?

xnu中的vnode和文件描述符,存储文件操作向量的位置

在xnu中,我们有vnode_t实体,它代表全局文件。 每个进程都可以通过设置新的文件描述符并在fg_data下设置vnode来访问该文件(假设它具有正确的权限) fp->f_fglob->fg_data = vp; vnode包含所有相关操作的基本操作列表,并根据文件的FS进行设置。 即HFS +驱动程序实现此类向量并相应地设置其vnode。 int (**v_op)(void *); /* vnode operations vector */ 这是可以在vnode上运行的所有操作的函数指针的向量。 另外,我们有fileops结构,它是文件描述符(fg_global)的一部分,它描述了这些函数的最小子集: 这是一个典型的定义: const struct fileops vnops = { .fo_type = DTYPE_VNODE, .fo_read = vn_read, .fo_write = vn_write, .fo_ioctl = vn_ioctl, .fo_select = vn_select, .fo_close = vn_closefile, .fo_kqfilter = vn_kqfilt_add, .fo_drain = NULL, }; 我们在这里设置: fp->f_fglob->fg_ops = &vnops; 我看到当在本地文件系统(HFS […]