summaryrefslogtreecommitdiff
path: root/sys/src/boot/pc/fs.h
blob: 1b53e929a0eb0c535d437b68f768278032114893 (plain)
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
31
32
33
34
35
36
typedef struct File File;
typedef struct Fs Fs;

#include "dosfs.h"
#include "kfs.h"

struct File{
	union{
		Dosfile	dos;
		Kfsfile	kfs;
		int walked;
	};
	Fs	*fs;
	char	*path;
};

struct Fs{
	union {
		Dos dos;
		Kfs kfs;
	};
	int	dev;				/* device id */
	long	(*diskread)(Fs*, void*, long);	/* disk read routine */
	vlong	(*diskseek)(Fs*, vlong);	/* disk seek routine */
	long	(*read)(File*, void*, long);
	int	(*walk)(File*, char*);
	File	root;
};

extern int chatty;
extern int dotini(Fs*);
extern int fswalk(Fs*, char*, File*);
extern int fsread(File*, void*, long);
extern int fsboot(Fs*, char*, Boot*);

#define BADPTR(x) ((ulong)x < 0x80000000)