LINUX_API大全
### Linux API 大全知识点概览 #### 一、Linux VFS(虚拟文件系统) Linux VFS 是一种抽象层,它允许操作系统与多种文件系统进行交互。VFS 的设计目标是提供一个统一的接口,使得内核能够支持各种类型的文件系统而无需修改核心代码。 - **1.1 目录缓存** - **d_invalidate**:该函数用于清除目录项缓存中的条目。 - **d_find_alias**:用于查找别名对应的目录项。 - **prune_dcache**:用于减少目录缓存中的条目数量。 - **shrink_dcache_sb**:该函数针对特定的超级块(superblock)减少目录缓存条目的数量。 - **have_submounts**:检查是否有子挂载点。 - **shrink_dcache_parent**:该函数用于减少父目录缓存的大小。 - **d_alloc**:分配新的目录项结构。 - **d_instantiate**:实例化目录项,将其关联到文件系统的inode上。 - **d_alloc_root**:为根目录创建一个新的目录项。 - **d_lookup**:查找目录项。 - **d_validate**:验证目录项的有效性。 - **d_delete**:删除目录项。 - **d_rehash**:重新哈希目录项以优化缓存性能。 - **d_move**:移动目录项到另一个目录。 - **__d_path**:构造路径名。 - **is_subdir**:判断一个目录是否为另一个目录的子目录。 - **find_inode_number**:查找inode编号。 - **d_drop**:释放目录项。 - **d_add**:添加目录项到缓存中。 - **dget**:增加目录项的引用计数。 - **d_unhashed**:移除目录项的哈希链表链接。 - **1.2 Inode处理** - **__mark_inode_dirty**:标记inode为脏状态。 - **write_inode_now**:立即写入inode数据到磁盘。 - **clear_inode**:清理inode数据。 - **invalidate_inodes**:使inode无效。 - **get_empty_inode**:获取空闲的inode。 - **iunique**:设置inode为唯一标识符。 - **insert_inode_hash**:将inode插入哈希表。 - **remove_inode_hash**:从哈希表中移除inode。 - **iput**:减少inode的引用计数。 - **bmap**:查找inode的块映射。 - **update_atime**:更新inode的访问时间。 - **make_bad_inode**:标记inode为坏inode。 - **is_bad_inode**:检查inode是否为坏inode。 - **1.3 注册和超级块** - **register_filesystem**:注册文件系统到内核。 - **unregister_filesystem**:注销文件系统。 - **__wait_on_super**:等待超级块完成操作。 - **get_super**:获取超级块。 - **get_empty_super**:获取空闲的超级块。 #### 二、Linux网络编程 Linux 提供了丰富的网络编程接口,包括对 socket 缓冲区的支持。 - **2.1 Socket 缓冲区函数** - **skb_queue_empty**:检查缓冲区队列是否为空。 - **skb_get**:获取socket缓冲区的引用。 - **kfree_skb**:释放socket缓冲区。 - **skb_cloned**:检查socket缓冲区是否被克隆。 - **skb_shared**:检查socket缓冲区是否被共享。 - **skb_unshare**:使socket缓冲区不再被共享。 - **skb_peek**:从队列头部查看socket缓冲区。 - **skb_peek_tail**:从队列尾部查看socket缓冲区。 - **skb_queue_len**:返回队列长度。 - **__skb_queue_head**:向队列头部添加socket缓冲区。 - **skb_queue_head**:同上。 - **__skb_queue_tail**:向队列尾部添加socket缓冲区。 - **skb_queue_tail**:同上。 - **__skb_dequeue**:从队列头部移除socket缓冲区。 - **skb_dequeue**:同上。 - **skb_insert**:在队列中插入socket缓冲区。 - **skb_append**:将socket缓冲区附加到队列。 - **skb_unlink**:移除队列中的socket缓冲区。 - **__skb_dequeue_tail**:从队列尾部移除socket缓冲区。 - **skb_dequeue_tail**:同上。 - **skb_put**:向socket缓冲区添加数据。 - **skb_push**:在socket缓冲区头部添加数据。 - **skb_pull**:从socket缓冲区头部移除数据。 - **skb_headroom**:返回socket缓冲区头部的空间大小。 - **skb_tailroom**:返回socket缓冲区尾部的空间大小。 - **skb_reserve**:保留空间而不改变数据位置。 - **skb_trim**:调整socket缓冲区大小。 - **skb_orphan**:使socket缓冲区孤儿化,即不再与发送者或接收者关联。 - **skb_queue_purge**:清空socket缓冲区队列。 - **__skb_queue_purge**:同上。 - **dev_alloc_skb**:为设备分配socket缓冲区。 - **skb_cow**:复制数据并返回新缓冲区。 - **skb_over_panic**:检测socket缓冲区溢出。 - **skb_under_panic**:检测socket缓冲区不足。 - **alloc_skb**:分配socket缓冲区。 - **__kfree_skb**:内部函数,用于释放socket缓冲区。 - **skb_clone**:克隆socket缓冲区。 以上概述了《LINUX-API大全》文档中提到的关键知识点。这些函数和接口为Linux操作系统提供了强大的文件系统管理和网络编程能力,对于理解Linux内核的工作原理和开发基于Linux的应用程序都至关重要。
剩余166页未读,继续阅读
评论13
最新资源