diff options
Diffstat (limited to 'libgloss/crx/open.c')
-rw-r--r-- | libgloss/crx/open.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/libgloss/crx/open.c b/libgloss/crx/open.c new file mode 100644 index 000000000..abe7bbfd1 --- /dev/null +++ b/libgloss/crx/open.c @@ -0,0 +1,41 @@ +/* open.c -- Implementation of the low-level open() routine + * + * Copyright (c) 2004 National Semiconductor Corporation + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#include <sys/syscall.h> +#include <stdarg.h> + +int open_aux (char *, int, int); + +/* The prototype in <fcntl.h> for open() uses ..., meaning function + * parameters reside on stack, but the debugger expects the parameters + * to reside in registers, thus we call an auxiliary function with + * bounded number of parameters. + */ +int open (char *path, int flags, ...) +{ + int mode; + va_list ap; + + va_start(ap, flags); + mode = va_arg(ap, int); + open_aux (path, flags, mode); + va_end(ap); +} + +int open_aux (char *path, int flags, int mode) +{ + HOST_SERVICE (SVC_OPEN); +} + |