summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/gpxe/command.h22
-rw-r--r--src/include/stdlib.h1
-rw-r--r--src/include/unistd.h24
3 files changed, 47 insertions, 0 deletions
diff --git a/src/include/gpxe/command.h b/src/include/gpxe/command.h
new file mode 100644
index 000000000..95f6c5ed5
--- /dev/null
+++ b/src/include/gpxe/command.h
@@ -0,0 +1,22 @@
+#ifndef _GPXE_COMMAND_H
+#define _GPXE_COMMAND_H
+
+#include <gpxe/tables.h>
+
+/** A command-line command */
+struct command {
+ /** Name of the command */
+ const char *name;
+ /**
+ * Function implementing the command
+ *
+ * @v argc Argument count
+ * @v argv Argument list
+ * @ret rc Return status code
+ */
+ int ( * exec ) ( int argc, char **argv );
+};
+
+#define __command __table ( commands, 01 )
+
+#endif /* _GPXE_COMMAND_H */
diff --git a/src/include/stdlib.h b/src/include/stdlib.h
index a7dd1d836..d71ee1ab2 100644
--- a/src/include/stdlib.h
+++ b/src/include/stdlib.h
@@ -5,6 +5,7 @@ extern unsigned long strtoul ( const char *p, char **endp, int base );
extern void * realloc ( void *old_ptr, size_t new_size );
extern void * malloc ( size_t size );
extern void free ( void *ptr );
+extern int system ( const char *command );
/**
* Allocate cleared memory
diff --git a/src/include/unistd.h b/src/include/unistd.h
new file mode 100644
index 000000000..9dd51dcd7
--- /dev/null
+++ b/src/include/unistd.h
@@ -0,0 +1,24 @@
+#ifndef _UNISTD_H
+#define _UNISTD_H
+
+#include <stddef.h>
+#include <stdarg.h>
+
+extern int execv ( const char *command, char * const argv[] );
+
+/**
+ * Execute command
+ *
+ * @v command Command name
+ * @v arg ... Argument list (starting with argv[0])
+ * @ret rc Command exit status
+ *
+ * This is a front end to execv().
+ */
+#define execl( command, arg, ... ) ( { \
+ char * const argv[] = { (arg), ## __VA_ARGS__, NULL }; \
+ int rc = execv ( (command), argv ); \
+ rc; \
+ } )
+
+#endif /* _UNISTD_H */