Commit 9e08dc8e authored by Vitaly Lipatov's avatar Vitaly Lipatov

ioctl.c: enconv from koi8-r to utf8

parent dd5107e2
/* /*
* ioctl.c - , ioctl * ioctl.c - Пример программы, использующей ioctl для управления модулем ядра
* *
* cat, / . * До сих пор мы ползовались командой cat, для передачи данных в/из модуля.
* , ioctl. * Теперь же мы должны написать свою программу, которая использовала бы ioctl.
*/ */
/* /*
* ioctl * Определения старшего номера устройства и коды операций ioctl
*/ */
#include "charbridge.h" #include "charbridge.h"
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include <errno.h> #include <errno.h>
/* /*
* ioctl * Функции работы с драйвером через ioctl
*/ */
ioctl_set_msg(int file_desc, char *message) ioctl_set_msg(int file_desc, char *message)
...@@ -26,7 +26,7 @@ ioctl_set_msg(int file_desc, char *message) ...@@ -26,7 +26,7 @@ ioctl_set_msg(int file_desc, char *message)
ret_val = ioctl(file_desc, IOCTL_SET_MSG, message); ret_val = ioctl(file_desc, IOCTL_SET_MSG, message);
if (ret_val < 0) { if (ret_val < 0) {
printf(" ioctl_set_msg: %d\n", ret_val); printf("Ошибка при вызове ioctl_set_msg: %d\n", ret_val);
exit(-1); exit(-1);
} }
} }
...@@ -37,20 +37,20 @@ ioctl_get_msg(int file_desc) ...@@ -37,20 +37,20 @@ ioctl_get_msg(int file_desc)
char message[100]; char message[100];
/* /*
* - -- * Внимание - ядро понятия не имеет -- какой длины буфер мы используем
* , . * поэтому возможна ошибка, связанная с переполнением буфера.
* * В реальных проектах вам необходимо предусмотреть
* ioctl : * передачу в ioctl двух дополнительных параметров:
* * собственно буфера сообщения и его длину
*/ */
ret_val = ioctl(file_desc, IOCTL_GET_MSG, message,sizeof(message)); ret_val = ioctl(file_desc, IOCTL_GET_MSG, message,sizeof(message));
if (ret_val < 0) { if (ret_val < 0) {
printf(" ioctl_get_msg: %d\n", ret_val); printf("Ошибка при вызове ioctl_get_msg: %d\n", ret_val);
exit(-1); exit(-1);
} }
printf(" (get_msg): %s\n", message); printf("Получено сообщение (get_msg): %s\n", message);
} }
ioctl_get_nth_byte(int file_desc) ioctl_get_nth_byte(int file_desc)
...@@ -58,7 +58,7 @@ ioctl_get_nth_byte(int file_desc) ...@@ -58,7 +58,7 @@ ioctl_get_nth_byte(int file_desc)
int i; int i;
char c; char c;
printf("N- (get_nth_byte): "); printf("N-ный байт в сообщении (get_nth_byte): ");
i = 0; i = 0;
while (c != 0) { while (c != 0) {
...@@ -66,7 +66,7 @@ ioctl_get_nth_byte(int file_desc) ...@@ -66,7 +66,7 @@ ioctl_get_nth_byte(int file_desc)
if (c < 0) { if (c < 0) {
printf printf
(" ioctl_get_nth_byte %d- .\n", i); ("Ошибка при вызове ioctl_get_nth_byte на %d-м байте.\n", i);
exit(-1); exit(-1);
} }
...@@ -76,16 +76,16 @@ ioctl_get_nth_byte(int file_desc) ...@@ -76,16 +76,16 @@ ioctl_get_nth_byte(int file_desc)
} }
/* /*
* Main - ioctl * Main - Проверка работоспособности функции ioctl
*/ */
main() main()
{ {
int file_desc, ret_val; int file_desc, ret_val;
char *msg = " ioctl\n"; char *msg = "Это сообщение передается через ioctl\n";
file_desc = open("/dev/cbsideA0", 0); file_desc = open("/dev/cbsideA0", 0);
if (file_desc < 0) { if (file_desc < 0) {
printf(" : %s\n", DEVICE_FILE_NAME); printf("Невозможно открыть файл устройства: %s\n", DEVICE_FILE_NAME);
printf("With error(%d): %s\n", errno, strerror(errno)); printf("With error(%d): %s\n", errno, strerror(errno));
exit(-1); exit(-1);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment