aboutsummaryrefslogtreecommitdiff
path: root/kernel/io/include/io/io.h
blob: a715f1b675e4bdfe2cde78969b041a5e814345f0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef IO_H
#define IO_H

#include <stddef.h>

typedef long ssize_t;

struct file;
struct file_operations;

struct file {
    struct file_operations* fops;
    void* private_data;
};

struct file_operations {
    int (*open)(struct file* file);
    int (*ioctl)(struct file* file, int cmd, long args);
    ssize_t (*read)(struct file* file, char* const buffer, size_t size);
    ssize_t (*write)(struct file* file, const char* const buffer, size_t size);
    int (*close)(struct file* file);
};

int open(struct file* file);
int ioctl(struct file* file, int cmd, long args);
ssize_t read(struct file* file, char* const buffer, size_t size);
ssize_t write(struct file* file, const char* const buffer, size_t size);
int close(struct file* file);

#endif