26 lines
739 B
C
26 lines
739 B
C
#pragma once
|
|
#include "user/termios.h"
|
|
#include "sys/char/ring.h"
|
|
#include "sys/types.h"
|
|
|
|
struct chrdev {
|
|
void *dev_data;
|
|
|
|
struct ring buffer;
|
|
enum {
|
|
CHRDEV_GENERIC = 0,
|
|
CHRDEV_TTY
|
|
} type;
|
|
|
|
// TODO: move tty info somewhere else?
|
|
struct termios tc;
|
|
|
|
int (*ioctl) (struct chrdev *chr, unsigned int cmd, void *arg);
|
|
ssize_t (*write) (struct chrdev *chr, const void *buf, size_t pos, size_t lim);
|
|
ssize_t (*read) (struct chrdev *chr, void *buf, size_t pos, size_t lim);
|
|
};
|
|
|
|
int chr_ioctl(struct chrdev *chr, unsigned int cmd, void *arg);
|
|
ssize_t chr_write(struct chrdev *chr, const void *buf, size_t pos, size_t lim);
|
|
ssize_t chr_read(struct chrdev *chr, void *buf, size_t pos, size_t lim);
|