49 lines
1.3 KiB
C
49 lines
1.3 KiB
C
|
#ifndef __LIB_USER_SYSCALL_H
|
||
|
#define __LIB_USER_SYSCALL_H
|
||
|
|
||
|
#include <stdbool.h>
|
||
|
#include <debug.h>
|
||
|
|
||
|
/* Process identifier. */
|
||
|
typedef int pid_t;
|
||
|
#define PID_ERROR ((pid_t) -1)
|
||
|
|
||
|
/* Map region identifier. */
|
||
|
typedef int mapid_t;
|
||
|
#define MAP_FAILED ((mapid_t) -1)
|
||
|
|
||
|
/* Maximum characters in a filename written by readdir(). */
|
||
|
#define READDIR_MAX_LEN 14
|
||
|
|
||
|
/* Typical return values from main() and arguments to exit(). */
|
||
|
#define EXIT_SUCCESS 0 /* Successful execution. */
|
||
|
#define EXIT_FAILURE 1 /* Unsuccessful execution. */
|
||
|
|
||
|
/* Projects 2 and later. */
|
||
|
void halt (void) NO_RETURN;
|
||
|
void exit (int status) NO_RETURN;
|
||
|
pid_t exec (const char *file);
|
||
|
int wait (pid_t);
|
||
|
bool create (const char *file, unsigned initial_size);
|
||
|
bool remove (const char *file);
|
||
|
int open (const char *file);
|
||
|
int filesize (int fd);
|
||
|
int read (int fd, void *buffer, unsigned length);
|
||
|
int write (int fd, const void *buffer, unsigned length);
|
||
|
void seek (int fd, unsigned position);
|
||
|
unsigned tell (int fd);
|
||
|
void close (int fd);
|
||
|
|
||
|
/* Project 3 and optionally project 4. */
|
||
|
mapid_t mmap (int fd, void *addr);
|
||
|
void munmap (mapid_t);
|
||
|
|
||
|
/* Project 4 only. */
|
||
|
bool chdir (const char *dir);
|
||
|
bool mkdir (const char *dir);
|
||
|
bool readdir (int fd, char name[READDIR_MAX_LEN + 1]);
|
||
|
bool isdir (int fd);
|
||
|
int inumber (int fd);
|
||
|
|
||
|
#endif /* lib/user/syscall.h */
|