Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4973 right-hear 1
#ifndef __OS_LAYER_OS_LAYER_H
2
#define __OS_LAYER_OS_LAYER_H
3
 
4
#ifdef __cplusplus
5
extern "C" {
6
#endif
7
 
8
#include
9
#include
10
#include
11
 
12
#define __FSEMU_FLAG_USED		0x00000001
13
#define __FSEMU_FLAG_DIRECTORY		0x00000002
14
#define __FSEMU_FLAG_DEVICE		0x00000004
15
#define __FSEMU_FLAG_READ  		0x00000008
16
#define __FSEMU_FLAG_WRITE		0x00000010
17
#define __FSEMU_FLAG_SEEK		0x00000020
18
#define __FSEMU_FLAG_STDIO		0x00000040
19
 
20
#define __FSF(x)	__FSEMU_FLAG_##x
21
 
22
#define T_FSF(x,f)	((x)&__FSF(f))
23
 
24
#define __FSEMU_BLOCK_SIZE		512
25
 
26
struct __fsemu_io_t;
27
 
28
typedef struct
29
{
30
 int (* putc)(int dev,int c);
31
 int (* getc)(int dev,int * c);
32
 int (* read)(struct __fsemu_io_t *,int blkno,int blkcount,char *);
33
 int (* write)(struct __fsemu_io_t *,int blkno,int blkcount,char *);
34
} __fsemu_stdio_t;
35
 
36
typedef struct __fsemu_io_t
37
{
38
 char * filename;
39
 char * filebuffer;
40
 int handle;
41
 int pos;
42
 int size;
43
 int flags;
44
 char * systree_buf;
45
 struct systree_info * st_info;
46
 __fsemu_stdio_t * special_ops;
47
} __fsemu_io_t;
48
 
49
#define __FSEMU_MAX_FILES		64
50
 
51
extern __fsemu_stdio_t __fsemu_stdin_ops,
52
		       __fsemu_stdout_ops,
53
		       __fsemu_stderr_ops,
54
		       __fsemu_stdprn_ops,
55
		       __fsemu_stdaux_ops;
56
 
57
#define __FSEMU_f_STDIN { "stdin",NULL,0,0,0,__FSF(USED)|__FSF(READ) \
58
			  |__FSF(DEVICE)|__FSF(STDIO), NULL,NULL,&__fsemu_stdin_ops }
59
#define __FSEMU_f_STDOUT { "stdout",NULL,1,0,0,__FSF(USED)|__FSF(WRITE) \
60
			  |__FSF(DEVICE)|__FSF(STDIO), NULL,NULL,&__fsemu_stdout_ops }
61
#define __FSEMU_f_STDERR { "stderr",NULL,2,0,0,__FSF(USED)|__FSF(WRITE) \
62
			  |__FSF(DEVICE)|__FSF(STDIO), NULL,NULL,&__fsemu_stderr_ops }
63
#define __FSEMU_f_STDPRN { "stdprn",NULL,3,0,0,__FSF(USED)|__FSF(WRITE) \
64
			  |__FSF(DEVICE)|__FSF(STDIO), NULL,NULL,&__fsemu_stdprn_ops }
65
#define __FSEMU_f_STDAUX { "stdaux",NULL,4,0,0,__FSF(USED)|__FSF(WRITE) \
66
			  |__FSF(DEVICE)|__FSF(STDIO)|__FSF(READ), NULL,NULL,&__fsemu_stdaux_ops }
67
 
68
#define __FSEMU_STDIO_DECLS \
69
    static __fsemu_io_t __fsemu_io_stdin=__FSEMU_f_STDIN; \
70
    static __fsemu_io_t __fsemu_io_stdout=__FSEMU_f_STDOUT; \
71
    static __fsemu_io_t __fsemu_io_stderr=__FSEMU_f_STDERR; \
72
    static __fsemu_io_t __fsemu_io_stdprn=__FSEMU_f_STDPRN; \
73
    static __fsemu_io_t __fsemu_io_stdaux=__FSEMU_f_STDAUX;
74
 
75
#define __FSEMU_STDIO_TABLE_DECLS \
76
    &__fsemu_io_stdin, \
77
    &__fsemu_io_stdout, \
78
    &__fsemu_io_stderr, \
79
    &__fsemu_io_stdprn, \
80
    &__fsemu_io_stdaux
81
 
82
 
83
extern __fsemu_stdio_t __fsemu_rd1_ops,
84
		       __fsemu_hd1_ops,
85
		       __fsemu_hd2_ops,
86
		       __fsemu_hd3_ops,
87
		       __fsemu_hd4_ops;
88
 
89
#define __FSEMU_f_RD1 { "/RD/1",NULL,5,0,0,__FSF(USED)|__FSF(READ)| \
90
		        __FSF(WRITE)|__FSF(DEVICE),NULL,NULL,&__fsemu_rd1_ops }
91
#define __FSEMU_f_HD1 { "/HD/1",NULL,6,0,0,__FSF(USED)|__FSF(READ)| \
92
		        __FSF(DEVICE),NULL,NULL,&__fsemu_hd1_ops }
93
#define __FSEMU_f_HD2 { "/HD/2",NULL,7,0,0,__FSF(USED)|__FSF(READ)| \
94
		        __FSF(DEVICE),NULL,NULL,&__fsemu_hd2_ops }
95
#define __FSEMU_f_HD3 { "/HD/3",NULL,8,0,0,__FSF(USED)|__FSF(READ)| \
96
		        __FSF(DEVICE),NULL,NULL,&__fsemu_hd3_ops }
97
#define __FSEMU_f_HD4 { "/HD/4",NULL,9,0,0,__FSF(USED)|__FSF(READ)| \
98
		        __FSF(DEVICE),NULL,NULL,&__fsemu_hd4_ops }
99
 
100
#define __FSEMU_DEV_DECLS \
101
    static __fsemu_io_t __fsemu_io_rd1=__FSEMU_f_RD1; \
102
    static __fsemu_io_t __fsemu_io_hd1=__FSEMU_f_HD1; \
103
    static __fsemu_io_t __fsemu_io_hd2=__FSEMU_f_HD2; \
104
    static __fsemu_io_t __fsemu_io_hd3=__FSEMU_f_HD3; \
105
    static __fsemu_io_t __fsemu_io_hd4=__FSEMU_f_HD4;
106
 
107
#define __FSEMU_DEV_TABLE_DECLS \
108
    &__fsemu_io_rd1,    \
109
    &__fsemu_io_hd1,    \
110
    &__fsemu_io_hd2,    \
111
    &__fsemu_io_hd3,    \
112
    &__fsemu_io_hd4
113
 
114
#define __F_READABLE(x)	T_FSF(x,READ)
115
#define __F_WRITABLE(x)	T_FSF(x,WRITE)
116
#define __F_SEEKABLE(x)	T_FSF(x,SEEK)
117
 
118
#ifdef __cplusplus
119
}
120
#endif
121
 
122
#endif