nhmk/示例/3-ioctl/chardev.h

38 lines
1.3 KiB
C
Raw Normal View History

2024-09-03 14:48:19 +08:00
/*
* chardev.h - ioctl
* chardev2.c ioctl() userspace_ioctl.c
*/
#ifndef CHARDEV_H
#define CHARDEV_H
#include <linux/ioctl.h>
/* 主设备号。由于 ioctl 需要知道主设备号,我们不能再依赖动态注册。 */
#define MAJOR_NUM 100
/* 设置设备驱动的消息 */
#define IOCTL_SET_MSG _IOW(MAJOR_NUM, 0, char *)
/* _IOW 表示我们正在创建一个 ioctl 命令,用于将信息从用户进程传递到内核模块。
* MAJOR_NUM 使
*
*
*/
/* 获取设备驱动的消息 */
#define IOCTL_GET_MSG _IOR(MAJOR_NUM, 1, char *)
/* 此 IOCTL 用于输出,获取设备驱动的消息。
*
*/
/* 获取消息的第 n 个字节 */
#define IOCTL_GET_NTH_BYTE _IOWR(MAJOR_NUM, 2, int)
/* 此 IOCTL 用于输入和输出。它从用户获取一个数字 n并返回消息的第 n 个字节。
*/
/* 设备文件的名称 */
#define DEVICE_FILE_NAME "char_dev"
#define DEVICE_PATH "/dev/char_dev"
#endif