Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#define _LOCK_EXTENSION
2
#define _QLOCK_EXTENSION
3
#define _BSD_EXTENSION
4
#include <sys/types.h>
5
#include <lock.h>
6
#include <qlock.h>
7
#include <lib9.h>
8
#include <stdlib.h>
9
#include <string.h>
10
#include <bsd.h>
11
#include <unistd.h>
12
#include <fcntl.h>
13
#include <assert.h>
14
#include <utf.h>
15
#include <fmt.h>
16
#include <signal.h>
17
 
18
typedef
19
struct Qid
20
{
21
	uvlong	path;
22
	ulong	vers;
23
	uchar	type;
24
} Qid;
25
 
26
typedef
27
struct Dir {
28
	/* system-modified data */
29
	ushort	type;	/* server type */
30
	uint	dev;	/* server subtype */
31
	/* file data */
32
	Qid	qid;	/* unique id from server */
33
	ulong	mode;	/* permissions */
34
	ulong	atime;	/* last read time */
35
	ulong	mtime;	/* last write time */
36
	vlong	length;	/* file length: see <u.h> */
37
	char	*name;	/* last element of path */
38
	char	*uid;	/* owner name */
39
	char	*gid;	/* group name */
40
	char	*muid;	/* last modifier name */
41
} Dir;
42
 
43
uint	_convM2D(uchar*, uint, Dir*, char*);
44
uint	_convD2M(Dir*, uchar*, uint);
45
Dir	*_dirstat(char*);
46
int	_dirwstat(char*, Dir*);
47
Dir	*_dirfstat(int);
48
int	_dirfwstat(int, Dir*);
49
long	_dirread(int, Dir**);
50
long _dirreadall(int, Dir**);
51
void _nulldir(Dir*);
52
uint _sizeD2M(Dir*);
53
 
54
typedef
55
struct Waitmsg
56
{
57
	int pid;	/* of loved one */
58
	unsigned long time[3];	/* of loved one & descendants */
59
	char	*msg;
60
} Waitmsg;
61
 
62
 
63
extern	int	_AWAIT(char*, int);
64
extern	int	_ALARM(unsigned long);
65
extern	int	_BIND(const char*, const char*, int);
66
extern	int	_CHDIR(const char*);
67
extern	int	_CLOSE(int);
68
extern	int	_CREATE(char*, int, unsigned long);
69
extern	int	_DUP(int, int);
70
extern	int	_ERRSTR(char*, unsigned int);
71
extern	int	_EXEC(char*, char*[]);
72
extern	void	_EXITS(char *);
73
extern	int	_FD2PATH(int, char*, int);
74
extern	int	_FAUTH(int, char*);
75
extern	int	_FSESSION(int, char*, int);
76
extern	int	_FSTAT(int, unsigned char*, int);
77
extern	int	_FWSTAT(int, unsigned char*, int);
78
extern	int	_MOUNT(int, int, const char*, int, const char*);
79
extern	int	_NOTED(int);
80
extern	int	_NOTIFY(int(*)(void*, char*));
81
extern	int	_OPEN(const char*, int);
82
extern	int	_PIPE(int*);
83
extern	long	_PREAD(int, void*, long, long long);
84
extern	long	_PWRITE(int, void*, long, long long);
85
extern	long	_READ(int, void*, long);
86
extern	int	_REMOVE(const char*);
87
extern	int	_RENDEZVOUS(unsigned long, unsigned long);
88
extern	int	_RFORK(int);
89
extern	int	_SEGATTACH(int, char*, void*, unsigned long);
90
extern	int	_SEGBRK(void*, void*);
91
extern	int	_SEGDETACH(void*);
92
extern	int	_SEGFLUSH(void*, unsigned long);
93
extern	int	_SEGFREE(void*, unsigned long);
94
extern	long long	_SEEK(int, long long, int);
95
extern	int	_SLEEP(long);
96
extern	int	_STAT(const char*, unsigned char*, int);
97
extern	Waitmsg*	_WAIT(void);
98
extern	long	_WRITE(int, const void*, long);
99
extern	int	_WSTAT(const char*, unsigned char*, int);
100
extern 	void *_MALLOCZ(int, int);
101
extern	int	_WERRSTR(char*, ...);
102
extern	long	_READN(int, void*, long);
103
extern	int	_IOUNIT(int);
104
 
105
#define dirstat _dirstat
106
#define dirfstat _dirfstat
107
 
108
#define OREAD 0
109
#define OWRITE 1
110
#define ORDWR 2
111
#define OCEXEC 32
112
 
113
#define AREAD 4
114
#define AWRITE 2
115
#define AEXEC 1
116
#define AEXIST 0
117
 
118
#define open _OPEN
119
#define close _CLOSE
120
#define read _READ
121
#define write _WRITE
122
#define _exits(s) _exit(s && *(char*)s ? 1 : 0)
123
#define exits(s) exit(s && *(char*)s ? 1 : 0)
124
#define create _CREATE
125
#define pread _PREAD
126
#define readn _READN
127
#define mallocz _MALLOCZ
128
#define iounit	_IOUNIT
129
#define bind _BIND
130
 
131
/* assume being called as in event.c */
132
#define postnote(x, pid, msg) kill(pid, SIGTERM)
133
#define atnotify(x, y) signal(SIGTERM, ekill)
134
 
135
#define ERRMAX 128
136
 
137
extern	void	setmalloctag(void*, ulong);
138
extern	ulong	getcallerpc(void*);