xref: /inferno-os/os/boot/rpcg/lib.h (revision 7ef44d652ae9e5e1f5b3465d73684e4a54de73c0)
1 /*
2  * functions (possibly) linked in, complete, from libc.
3  */
4 
5 /*
6  * mem routines
7  */
8 extern	void*	memccpy(void*, void*, int, long);
9 extern	void*	memset(void*, int, long);
10 extern	int	memcmp(void*, void*, long);
11 extern	void*	memmove(void*, void*, long);
12 extern	void*	memchr(void*, int, long);
13 
14 /*
15  * string routines
16  */
17 extern	char*	strcat(char*, char*);
18 extern	char*	strchr(char*, char);
19 extern	int	strcmp(char*, char*);
20 extern	char*	strcpy(char*, char*);
21 extern	char*	strncat(char*, char*, long);
22 extern	char*	strncpy(char*, char*, long);
23 extern	int	strncmp(char*, char*, long);
24 extern	long	strlen(char*);
25 extern	char*	strrchr(char*, char);
26 extern	char*	strstr(char*, char*);
27 
28 /*
29  * print routines
30  * 	Fconv isn't used but is defined to satisfy prototypes in libg.h
31  *	that are never called.
32  */
33 typedef	struct Fconv Fconv;
34 
35 extern	char*	donprint(char*, char*, char*, void*);
36 extern	int	sprint(char*, char*, ...);
37 extern	int	print(char*, ...);
38 
39 #define	PRINTSIZE	256
40 
41 /*
42  * one-of-a-kind
43  */
44 extern	int	atoi(char*);
45 extern	long	strtol(char*, char**, int);
46 extern	ulong	strtoul(char*, char**, int);
47 extern	long	end;
48 
49 /*
50  * Syscall data structures
51  */
52 
53 #define	MORDER	0x0003	/* mask for bits defining order of mounting */
54 #define	MREPL	0x0000	/* mount replaces object */
55 #define	MBEFORE	0x0001	/* mount goes before others in union directory */
56 #define	MAFTER	0x0002	/* mount goes after others in union directory */
57 #define	MCREATE	0x0004	/* permit creation in mounted directory */
58 #define	MMASK	0x0007	/* all bits on */
59 
60 #define	OREAD	0	/* open for read */
61 #define	OWRITE	1	/* write */
62 #define	ORDWR	2	/* read and write */
63 #define	OEXEC	3	/* execute, == read but check execute permission */
64 #define	OTRUNC	16	/* or'ed in (except for exec), truncate file first */
65 #define	OCEXEC	32	/* or'ed in, close on exec */
66 #define	ORCLOSE	64	/* or'ed in, remove on close */
67 
68 #define	NCONT	0	/* continue after note */
69 #define	NDFLT	1	/* terminate after note */
70 
71 typedef struct Qid	Qid;
72 typedef struct Dir	Dir;
73 typedef struct Waitmsg	Waitmsg;
74 
75 #define	ERRLEN	64
76 #define	DIRLEN	116
77 #define	NAMELEN	28
78 
79 struct Qid
80 {
81 	ulong	path;
82 	ulong	vers;
83 };
84 
85 struct Dir
86 {
87 	char	name[NAMELEN];
88 	char	uid[NAMELEN];
89 	char	gid[NAMELEN];
90 	Qid	qid;
91 	ulong	mode;
92 	long	atime;
93 	long	mtime;
94 	vlong	length;
95 	short	type;
96 	short	dev;
97 };
98 
99 struct Waitmsg
100 {
101 	int	pid;		/* of loved one */
102 	int	status;		/* unused; a placeholder */
103 	ulong	time[3];	/* of loved one */
104 	char	msg[ERRLEN];
105 };
106 #define	nelem(x)	(sizeof(x)/sizeof((x)[0]))
107