Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
charbridge
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
charbridge
Commits
d3c2c1c0
Commit
d3c2c1c0
authored
Apr 28, 2011
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Сконвертировал из koi8-r в utf8
parent
dc5d9687
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
30 deletions
+30
-30
charbridge.c
charbridge.c
+0
-0
charbridge.h
charbridge.h
+30
-30
No files found.
charbridge.c
View file @
d3c2c1c0
This diff is collapsed.
Click to expand it.
charbridge.h
View file @
d3c2c1c0
/*
* charbridge.h - ioctl.
* charbridge.h -
определения
ioctl.
*
*
, ,
,
*
(charbridge.c),
*
(ioctl.c)
*
Определения, которые здесь находятся, должны помещаться в заголовочный файл потому
,
*
что они потребуются как модулю ядра (charbridge.c), так и
*
вызывающему процессу
(ioctl.c)
*/
#ifndef CHARBRIDGE_H
...
...
@@ -12,63 +12,63 @@
#include <linux/ioctl.h>
/*
*
.
ioctl,
*
,
*
.
*
Старший номер устройства. В случае использования
ioctl,
*
мы уже лишены возможности воспользоваться динамическим номером
,
*
поскольку он должен быть известен заранее
.
*/
#define MAJOR_NUM 255
/*
*
""
* (
)
*
.. , sideA
*
0..99,
sideB 100...199
*
""
100!
*
Количество "пар" устройств
* (
миноров получается в два раза больше
)
*
Т.к. логика построена на том, чтобы для sideA
*
использовать номера от 0..99, а для
sideB 100...199
*
ТО "ПАР" УСТРОЙСТВ НЕ МОЖЕТ БЫТЬ БОЛЬШЕ
100!
*/
#define MAX_DEV 10
#define MAX_PAIR 100
//
0..99 -
sideA0...sideA99
//
100..199 -
sideB0...sideB99
//
Миноры от 0..99 - для
sideA0...sideA99
//
Миноры от 100..199 - для
sideB0...sideB99
/*
*
*
Операция передачи сообщения драйверу устройства
*/
#define IOCTL_SET_MSG _IOR(MAJOR_NUM, 0, char *)
/*
* _IOR
,
*
* _IOR
означает, что команда передает данные
*
от пользовательского процесса к модулю ядра
*
*
, MAJOR_NUM --
.
*
Первый аргумент, MAJOR_NUM -- старший номер устройства
.
*
*
--
* (
).
*
Второй аргумент -- код команды
* (
можно указать иное значение
).
*
*
-- ,
*
Третий аргумент -- тип данных, передаваемых в ядро
*/
/*
*
*
Операция получения сообщения от драйвера устройства
*/
#define IOCTL_GET_MSG _IOR(MAJOR_NUM, 1, char *)
/*
*
IOCTL
.
*
,
*
,
.
*
Эта команда IOCTL используется для вывода данных
.
*
Нам по прежнему нужен буфер, размещенный в адресном пространстве
*
вызывающего процесса, куда это сообщение должно быть переписано
.
*/
/*
*
n-
*
Команда получения n-ного байта сообщения
*/
#define IOCTL_GET_NTH_BYTE _IOWR(MAJOR_NUM, 2, int)
/*
*
IOCTL ,
.
*
(n),
*
n- (Message[n]).
*
Здесь команда IOCTL работает как на ввод, так и на вывод
.
*
Она принимает от пользователя номер байта
(n),
*
и возвращает n-ный байт сообщения (Message[n]).
*/
/*
*
*
Имя файла устройства
*/
#define DEVICE_FILE_NAME "cbside"
//#define DEV1_NAME "/dev/cbsideA"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment