Files
2020-02-04 12:45:15 +02:00

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);