summaryrefslogtreecommitdiffhomepage
path: root/src/loader/inc/dev.h
blob: 930b35ce2b6996def0635c108e8f55b1ae50b278 (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
// MIT License, Copyright (c) 2021 Marvin Borner

#ifndef DEV_H
#define DEV_H

#include <def.h>

enum dev_type {
	DEV_DISK,
	DEV_FB,
};

struct dev {
	u8 id;
	enum dev_type type;
	char name[16];

	s32 (*read)(void *, u32, u32, struct dev *);
	s32 (*write)(const void *, u32, u32, struct dev *);

	u32 data; // Optional (device-specific) data/information
	u8 exists : 1;
};

u32 dev_register(enum dev_type type, char *name, u32 data,
		 s32 (*read)(void *, u32, u32, struct dev *),
		 s32 (*write)(const void *, u32, u32, struct dev *));
void dev_print(void);

#endif