ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux驱动知识:Linux Device Model

2019-05-27 11:40:32  阅读:306  来源: 互联网

标签:struct int void kobject device Linux Device Model class


Kobjects

#include <linux/kobject.h>
//The include file containing definitions for kobjects, related structures, and functions.

void kobject_init(struct kobject *kobj);
int kobject_set_name(struct kobject *kobj, const char *format, ...);
//Functions for kobject initialization.

struct kobject *kobject_get(struct kobject *kobj);
void kobject_put(struct kobject *kobj);
//Functions that manage reference counts for kobjects.

struct kobj_type;
struct kobj_type *get_ktype(struct kobject *kobj);
//Represents the type of structure within which a kobject is embedded. Use get_ktype to get the kobj_type associated with a given kobject.

int kobject_add(struct kobject *kobj);
extern int kobject_register(struct kobject *kobj);
void kobject_del(struct kobject *kobj);
void kobject_unregister(struct kobject *kobj);
//kobject_add adds a kobject to the system, handling kset membership, sysfs representation, and hotplug event generation. kobject_register is a convenience function that combines kobject_init and kobject_add. Use kobject_del to remove a kobject orkobject_unregister, which combines kobject_del and kobject_put.

void kset_init(struct kset *kset);
int kset_add(struct kset *kset);
int kset_register(struct kset *kset);
void kset_unregister(struct kset *kset);
//Initialization and registration functions for ksets.

decl_subsys(name, type, hotplug_ops);
//A macro that makes it easier to declare subsystems.

void subsystem_init(struct subsystem *subsys);
int subsystem_register(struct subsystem *subsys);
void subsystem_unregister(struct subsystem *subsys);
struct subsystem *subsys_get(struct subsystem *subsys)
void subsys_put(struct subsystem *subsys);
//Operations on subsystems.

 

Sysfs Operations

#include <linux/sysfs.h>
//The include file containing declarations for sysfs.

int sysfs_create_file(struct kobject *kobj, struct attribute *attr);
int sysfs_remove_file(struct kobject *kobj, struct attribute *attr);
int sysfs_create_bin_file(struct kobject *kobj, struct bin_attribute *attr);
int sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr);
int sysfs_create_link(struct kobject *kobj, struct kobject *target, char *name);
void sysfs_remove_link(struct kobject *kobj, char *name);
//Functions for creating and removing attribute files associated with a kobject.

 

Buses, Devices, and Drivers

int bus_register(struct bus_type *bus);
void bus_unregister(struct bus_type *bus);
//Functions that perform registration and unregistration of buses in the device model.

int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *, void *));
int bus_for_each_drv(struct bus_type *bus, struct device_driver *start, void *data, int (*fn)(struct device_driver *, void *));
//Functions that iterate over each of the devices and drivers, respectively, that are attached to the given bus.

BUS_ATTR(name, mode, show, store);
int bus_create_file(struct bus_type *bus, struct bus_attribute *attr);
void bus_remove_file(struct bus_type *bus, struct bus_attribute *attr);
//The BUS_ATTR macro may be used to declare a bus_attribute structure, which may then be added and removed with the above two functions.

int device_register(struct device *dev);
void device_unregister(struct device *dev);
//Functions that handle device registration.

DEVICE_ATTR(name, mode, show, store);
int device_create_file(struct device *device, struct device_attribute *entry);
void device_remove_file(struct device *dev, struct device_attribute *attr);
//Macros and functions that deal with device attributes.

int driver_register(struct device_driver *drv);
void driver_unregister(struct device_driver *drv);
//Functions that register and unregister a device driver.

DRIVER_ATTR(name, mode, show, store);
int driver_create_file(struct device_driver *drv, struct driver_attribute *attr);
void driver_remove_file(struct device_driver *drv, struct driver_attribute *attr);
//Macros and functions that manage driver attributes.

Classes

struct class_simple *class_simple_create(struct module *owner, char *name);
void class_simple_destroy(struct class_simple *cs);
struct class_device *class_simple_device_add(struct class_simple *cs, dev_t devnum, struct device *device, const char *fmt, ...);
void class_simple_device_remove(dev_t dev);
int class_simple_set_hotplug(struct class_simple *cs, int (*hotplug)(struct
class_device *dev, char **envp, int num_envp, char *buffer, int buffer_size));
//Functions that implement the class_simple interface; they manage simple class entries containing a dev attribute and little else.

int class_register(struct class *cls);
void class_unregister(struct class *cls);
Registration and unregistration of classes.
CLASS_ATTR(name, mode, show, store);
int class_create_file(struct class *cls, const struct class_attribute *attr);
void class_remove_file(struct class *cls, const struct class_attribute *attr);
The usual macros and functions for dealing with class attributes.
int class_device_register(struct class_device *cd);
void class_device_unregister(struct class_device *cd);
int class_device_rename(struct class_device *cd, char *new_name);
CLASS_DEVICE_ATTR(name, mode, show, store);
int class_device_create_file(struct class_device *cls, const struct class_device_attribute *attr);
void class_device_remove_file(struct class_device *cls, const struct class_device_attribute *attr);
//Functions and macros that implement the class device interface.

int class_interface_register(struct class_interface *intf);
void class_interface_unregister(struct class_interface *intf);
//Functions that add an interface to a class (or remove it).

Firmware

#include <linux/firmware.h>

int request_firmware(const struct firmware **fw, char *name, struct device *device);
int request_firmware_nowait(struct module *module, char *name, struct device *device, void *context, void (*cont)(const struct firmware *fw, void *context));
void release_firmware(struct firmware *fw);
//Functions that implement the kernel firmware-loading interface.

 

标签:struct,int,void,kobject,device,Linux,Device,Model,class
来源: https://www.cnblogs.com/realplay/p/10929826.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有