内核ACPI函数API之acpi_has_method

acpi_has_method(acpi_handle handle, char *name) 用于判断handle 是否提供形参name指定的method 其使用的例程如下: if (!acpi_has_method(adev->handle, "_DE...

2018-03-28 00:28:46

阅读数:73

评论数:0

内核ACPI函数API之acpi_evaluate_integer

acpi_evaluate_integer 这个函数用于从bios中获取一个字符串的值 其使用的例程如下: status = acpi_evaluate_integer(ac->device->handle, "_PSR&qu...

2018-03-28 00:04:46

阅读数:88

评论数:0

内核设备驱动API之__register_chrdev_region

__register_chrdev_region用于注册一个一个单独的主设备号和一个范围内的从设备号 其源码分析如下: static struct char_device_struct * __register_chrdev_region(unsigned int major, unsigned...

2018-03-23 21:06:29

阅读数:41

评论数:0

内核设备驱动API之register_chrdev

register_chrdev用于注册一个字符设备。 其源码分析如下: static inline int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops)...

2018-03-23 20:16:39

阅读数:73

评论数:0

内核设备驱动API之get_device和put_device

struct device *get_device(struct device *dev) 这个函数用于增加形参device 的引用计数 一般和put_device 配合使用 其源码分析如下: struct device *get_device(struct device *dev) { ret...

2018-03-23 17:17:25

阅读数:319

评论数:0

内核设备驱动API之device_rename

int device_rename(struct device *dev, const char *new_name)用于给已经存在设备重新命令。 其源码分析如下: int device_rename(struct device *dev, const char *new_name) { str...

2018-03-23 16:32:19

阅读数:40

评论数:0

内核设备驱动API之device_add

int device_add(struct device *dev)用于添加一个设备到linux的设备数 其源码分析如下: int device_add(struct device *dev) { struct device *parent; struct kobject *kobj; st...

2018-03-21 11:05:55

阅读数:87

评论数:0

内核设备驱动API之cdev_add

int cdev_add(struct cdev *p, dev_t dev, unsigned count)用于添加一个字符设备到系统 其使用的例程如下: err = cdev_add(cdev, MKDEV(cd->major, baseminor), count); ...

2018-03-21 11:04:32

阅读数:85

评论数:0

内核设备驱动API之__class_create

struct class *__class_create(struct module *owner, const char *name, struct lock_class_key *key) 用于动态创建设备的逻辑类,并完成字段的初始化,并在/sys/class 下新建一个目录。...

2018-03-20 21:14:08

阅读数:65

评论数:0

内核文件系统API之vfs_statfs

int vfs_statfs(const struct path *path, struct kstatfs *buf) 用于返回形参path 表示的文件的mount point和super block的有效flags 返回的结果保存在形参buf中 其结构体如下: struct kstatfs {...

2018-03-20 19:29:41

阅读数:106

评论数:0

内核文件系统API之vfs_getattr

int vfs_getattr(const struct path *path, struct kstat *stat, u32 request_mask, unsigned int query_flags)用于得到文件的 enhanced basic attributes 即基本的扩展属性 ...

2018-03-20 19:22:45

阅读数:95

评论数:0

内核文件系统API之vfs_stat

static inline int vfs_stat(const char __user *filename, struct kstat *stat)用于查找形参filename 代表的文件的属性信息,将其保存到形参stat中返回给用户 其源码分析如下: static inline int vfs...

2018-03-20 19:21:21

阅读数:138

评论数:0

_OSI("Windows 2001")在linux 平台上回返回2,不要用OSI 区分window和linux

当在bios中调用_OSI("Windows 2001") 来确实当前系统是否是window时,这个用法是错误的。但是linux中对OSI的实现函数如下: acpi_status acpi_ut_osi_implementation(struct acpi_wa...

2018-03-16 19:22:34

阅读数:111

评论数:0

不要使用_OS ,_OSI ,_REV来区分windows还是linux

再bios中经常有人通过下面的语句判断当前系统是linux _OSI("Linux") 还是window _OSI("Windows 2001") 目前这两个都是在BIOS中返回true 有的bios还使用_REV 来区分wi...

2018-03-16 18:58:29

阅读数:105

评论数:0

内核文件系统API之unshare_fs_struct

int unshare_fs_struct(void)用于跟当前task的fs_struct设置新值,实现不共享copy 其源码分析如下: int unshare_fs_struct(void) { struct fs_struct *fs = current->fs; ...

2018-03-16 08:54:58

阅读数:57

评论数:0

内核文件系统API之register_filesystem和unregister_filesystem

int register_filesystem(struct file_system_type * fs)用于注册一个新的文件系统 其源码分析如下: int register_filesystem(struct file_system_type * fs) { int res = 0; str...

2018-03-16 08:54:04

阅读数:52

评论数:0

内核文件系统API之put_unused_fd

void put_unused_fd(unsigned int fd)用于将形参对应的fd在其文件系统打开文件的bitmap中清零。 其源码分析如下: void put_unused_fd(unsigned int fd) { #得到当前进程对应文件管理结构体 struct files_stru...

2018-03-15 09:15:45

阅读数:63

评论数:0

内核文件系统API之notify_change

int notify_change(struct dentry * dentry, struct iattr * attr, struct inode **delegated_inode) 用于检查文件系统attribute的改动是否有效,有效的话,就通知文件系统这个改动,无效的话就返回error...

2018-03-15 09:14:51

阅读数:88

评论数:0

内核文件系统API之new_inode

struct inode *new_inode(struct super_block *sb)用于在形参给定的super_block上申请一个新的inode 其源码分析如下: struct inode *new_inode(struct super_block *sb) { struct ino...

2018-03-14 09:03:50

阅读数:79

评论数:0

内核文件系统API之mnt_want_write

int mnt_want_write(struct vfsmount *m)获得一个mount点的写权限 其源码分析如下: int mnt_want_write(struct vfsmount *m) { int ret; #标志开始对super block开始写 sb_start_writ...

2018-03-14 09:03:03

阅读数:67

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭