diff --git a/fireapp.c b/fireapp.c new file mode 100644 index 0000000000000000000000000000000000000000..f38927210bd458bf10f996e54ca29e9546074412 --- /dev/null +++ b/fireapp.c @@ -0,0 +1,51 @@ +#include <stdio.h> +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> + +#include <sys/stat.h> +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sys/ioctl.h> +#include <sys/sysmacros.h> + + +#define FIRE_MAJOR_NUMBER 503 +#define FIRE_MINOR_NUMBER 101 +#define FIRE_DEV_PATH_NAME "/dev/fire_ioctl" + +#define IOCTL_MAGIC_NUMBER 'f' +#define IOCTL_CMD_FIRE_ON _IO(IOCTL_MAGIC_NUMBER, 0) +#define IOCTL_CMD_FIRE_OFF _IO(IOCTL_MAGIC_NUMBER, 1) + +int main(void) { + dev_t fire_dev; + int fd; + fire_dev = makedev(FIRE_MAJOR_NUMBER, FIRE_MINOR_NUMBER); + mknod(FIRE_DEV_PATH_NAME, S_IFCHR | 0666, fire_dev); + + + fd = open(FIRE_DEV_PATH_NAME, O_RDWR); + + if (fd < 0) { + printf("fail to open FIRE\n"); + return -1; + } + + int i = 0; + + while (i < 100) { + if (ioctl(fd, IOCTL_CMD_FIRE_ON, 0) == 0) { + printf("fire\n"); + sleep(1); + i++; + } + else + printf("no fire\n"); + sleep(1); + i++; + } + + close(fd); + return 0; +}