Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
static ssize_t fw_device_read(struct file* filp, char __user *buffer, size_t length, loff_t* offset) { printk("Reading from device, return total number of messages\n"); return sprintf(buffer, "%u", accepted_num + dropped_num); }
int all_msg() { char msg[1] = {0}; int fd = open("/dev/device_fw", O_RDONLY); if (fd<0) { printf("Device access error, fd = %d\n", fd); return fd; } if(read(fd, &msg, 1)>0){ printf("Accepted packets number: %s\n", msg); } else { printf("Nothing to read\n"); } close(fd); return 0; }
static ssize_t fw_device_write(struct file *fp, const char *buff, size_t length, loff_t *ppos)
я показывал концепт.
мы не используем goto в программировании, потому что это очень сильно портит понимание, содержание, читаемость кода
Каким таким загадочно-непостижимым образом явное указание перехода на определенную метку может испортить понимание, содержание и читаемость кода???? Не понимаю…
Ярчайшим примером правильно написанной статьи я считаю серию статей Ю.Зальцмана в журнале «Информатика и Образование» «Архитектура и ассемблер БК». Я по его статьям учился программировать на ассемблере.
Создание и тестирование Firewall в Linux, Часть 1.3. Написание char device. Добавление виртуальной файловой системы…