diff options
author | bnewbold <bnewbold@robocracy.org> | 2010-03-31 08:52:45 +0800 |
---|---|---|
committer | iperry <iperry@gmail.com> | 2010-03-31 09:43:10 +0800 |
commit | 1d3861ef93f8423176c6010ab606abdab00a7cbd (patch) | |
tree | 5c95101e295bcfdd7f9f4292ce9204ddf7e7f662 /src/lib/syscalls.c | |
parent | 8d6bf3b196c2a0bc1adda4a04669e54fdc5b65cb (diff) | |
download | librambutan-1d3861ef93f8423176c6010ab606abdab00a7cbd.tar.gz librambutan-1d3861ef93f8423176c6010ab606abdab00a7cbd.zip |
Major hierarchy reorganization; see README.
copy-to-ide and Makefile updated to conform; .gitignore added;
LICENSE added
Diffstat (limited to 'src/lib/syscalls.c')
-rw-r--r-- | src/lib/syscalls.c | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/src/lib/syscalls.c b/src/lib/syscalls.c deleted file mode 100644 index 390cecd..0000000 --- a/src/lib/syscalls.c +++ /dev/null @@ -1,157 +0,0 @@ -#include "libmaple.h" -#include <sys/stat.h> - -/* _end is set in the linker command file */ -extern caddr_t _end; - -/* just in case, most boards have at least some memory */ -#ifndef RAMSIZE -# define RAMSIZE (caddr_t)0x50000 -#endif - -#define STACK_TOP 0x20000800 - -void uart_send(const char*str); - -/* - * sbrk -- changes heap size size. Get nbytes more - * RAM. We just increment a pointer in what's - * left of memory on the board. - */ -caddr_t -_sbrk(nbytes) -int nbytes; -{ - static caddr_t heap_ptr = NULL; - caddr_t base; - - if (heap_ptr == NULL) { - heap_ptr = (caddr_t)&_end; - } - - if ((STACK_TOP - (unsigned int)heap_ptr) >= 0) { - base = heap_ptr; - heap_ptr += nbytes; - return (base); - } else { - uart_send("heap full!\r\n"); - return ((caddr_t)-1); - } -} - -int _open(const char *path, int flags, ...) -{ - return 1; -} - -int _close(int fd) -{ - return 0; -} - -int _fstat(int fd, struct stat *st) -{ - st->st_mode = S_IFCHR; - return 0; -} - -int _isatty(int fd) -{ - return 1; -} - -int isatty(int fd) -{ - return 1; -} - -int _lseek(int fd, off_t pos, int whence) -{ - return -1; -} - -unsigned char getch(void) -{ -// while (!(USART2->SR & USART_FLAG_RXNE)); -// return USART2->DR; - return 0; -} - - -int _read(int fd, char *buf, size_t cnt) -{ - *buf = getch(); - - return 1; -} - -void putch(unsigned char c) -{ -// if (c == '\n') putch('\r'); - -// while (!(USART2->SR & USART_FLAG_TXE)); -// USART2->DR = c; -} - -void cgets(char *s, int bufsize) -{ - char *p; - int c; - int i; - - for (i = 0; i < bufsize; i++) { - *(s+i) = 0; - } -// memset(s, 0, bufsize); - - p = s; - - for (p = s; p < s + bufsize-1;) - { - c = getch(); - switch (c) - { - case '\r' : - case '\n' : - putch('\r'); - putch('\n'); - *p = '\n'; - return; - - case '\b' : - if (p > s) - { - *p-- = 0; - putch('\b'); - putch(' '); - putch('\b'); - } - break; - - default : - putch(c); - *p++ = c; - break; - } - } - return; -} - -int _write(int fd, const char *buf, size_t cnt) -{ - int i; -// uart_send("_write\r\n"); - - for (i = 0; i < cnt; i++) - putch(buf[i]); - - return cnt; -} - -/* Override fgets() in newlib with a version that does line editing */ -char *fgets(char *s, int bufsize, void *f) -{ -// uart_send("fgets\r\n"); - cgets(s, bufsize); - return s; -} |