summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJake Mannens <jake72360@gmail.com>2018-08-26 13:29:33 +1000
committerJake Mannens <jake72360@gmail.com>2018-08-26 13:29:33 +1000
commit307eaac66d378c1f6150519123ec1204277464d9 (patch)
tree8c6dc79c5c16bf776bd57ca78a439701cc10412e /include
parentdafb5464fe8b9a3f8ff41de233f9ff6cd21162ea (diff)
Updated the style of the code in lib/string.c to conform to the rest of
the project. Added the system call 'sys_panic' as well as the corresponding library function panic() whose prototype is defined in unistd.h. This is to allow userspace programs to deliberately crash the kernel for the purpose of debugging. Added the element 'write' as a function pointer in the tty_struct structure. The purpose of this function pointer is to provide a means for the TTY subsystem to notify the device driver of any newly added data to the write queue. Added the tty_write() function to the TTY subsystem. This function will copy data provided by the user into the specified TTY device's write queue, blocking if the queue's buffer is full. tty_write() will then call the driver's write() function to notify it of new data. Added the rsint_tx() function to the serial driver to handle transmit interrupts by re-supplying the UART's transmit FIFO.
Diffstat (limited to 'include')
-rw-r--r--include/kernel/sys.h8
-rw-r--r--include/kernel/tty.h2
-rw-r--r--include/stdio.h5
-rw-r--r--include/string.h26
-rw-r--r--include/unistd.h6
5 files changed, 28 insertions, 19 deletions
diff --git a/include/kernel/sys.h b/include/kernel/sys.h
index 2cefd09..e5275cf 100644
--- a/include/kernel/sys.h
+++ b/include/kernel/sys.h
@@ -9,8 +9,10 @@ extern int sys_alarm(void);
extern int sys_pause(void);
extern int sys_ctty(void);
extern int sys_read(void);
+extern int sys_write(void);
extern int sys_kill(void);
extern int sys_dummy(void);
+extern int sys_panic(void);
syscall_t call_table[256] = {
[0] = &sys_puts,
@@ -22,9 +24,9 @@ syscall_t call_table[256] = {
[6] = &sys_pause,
[7] = &sys_ctty,
[8] = &sys_read,
- [9] = &sys_kill,
- [10] = &sys_dummy,
- [11] = &sys_dummy,
+ [9] = &sys_write,
+ [10] = &sys_kill,
+ [11] = &sys_panic,
[12] = &sys_dummy,
[13] = &sys_dummy,
[14] = &sys_dummy,
diff --git a/include/kernel/tty.h b/include/kernel/tty.h
index b3f3012..7c0fc6e 100644
--- a/include/kernel/tty.h
+++ b/include/kernel/tty.h
@@ -15,11 +15,13 @@ struct tty_queue {
struct tty_struct {
void (*init) (void);
+ void (*write) (void);
struct tty_queue rqueue;
struct tty_queue wqueue;
};
ssize_t tty_read(unsigned, void*, size_t);
+ssize_t tty_write(unsigned, void*, size_t);
void tty_init(void);
diff --git a/include/stdio.h b/include/stdio.h
index f94e783..5387db0 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -14,8 +14,9 @@ int sprintf(char*, char*, ...);
int vsprintf(char*, char*, va_list);
-ssize_t read(void *buf, size_t len);
+ssize_t read(void*, size_t);
+ssize_t write(void*, size_t);
-int ctty(int ctty);
+int ctty(int);
#endif
diff --git a/include/string.h b/include/string.h
index 72c2b2e..d2f738b 100644
--- a/include/string.h
+++ b/include/string.h
@@ -12,26 +12,26 @@
typedef uint32_t size_t;
#endif
-void* memchr(const void*, int, size_t);
+void *memchr(const void*, int, size_t);
int memcmp(const void*, const void*, size_t);
-void* memcpy(void*, const void*, size_t);
-void* memmove(void*, const void*, size_t);
-void* memset(void*, int, size_t);
+void *memcpy(void*, const void*, size_t);
+void *memmove(void*, const void*, size_t);
+void *memset(void*, int, size_t);
size_t strlen(const char*);
-char* strcat(char*, const char*);
-char* strncat(char*, const char*, size_t);
-char* strchr(const char*, int);
-char* strrchr(char*, int);
+char *strcat(char*, const char*);
+char *strncat(char*, const char*, size_t);
+char *strchr(const char*, int);
+char *strrchr(char*, int);
int strcmp(const char*, const char*);
int strncmp(const char*, const char*, size_t);
-char* strcpy(char*, const char*);
-char* strncpy(char*, const char*, size_t);
+char *strcpy(char*, const char*);
+char *strncpy(char*, const char*, size_t);
size_t strcspn(const char*, const char*);
size_t strspn(const char*, const char*);
-char* strpbrk(const char*, const char*);
-char* strstr(const char*, const char*);
-char* strtok(char*, const char*);
+char *strpbrk(const char*, const char*);
+char *strstr(const char*, const char*);
+char *strtok(char*, const char*);
size_t strxfrm(char*, const char*, size_t);
#endif
diff --git a/include/unistd.h b/include/unistd.h
index c337e57..a7e4f32 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -19,7 +19,9 @@ typedef int16_t pid_t;
#define __SYS_pause 6
#define __SYS_ctty 7
#define __SYS_read 8
-#define __SYS_kill 9
+#define __SYS_write 9
+#define __SYS_kill 10
+#define __SYS_panic 11
#define _syscall0(type, name) \
type name(void) { \
@@ -59,4 +61,6 @@ void *getpdir(void);
int pause(void);
+void panic(void);
+
#endif