Contiki 2.5
newlib-syscalls.c
1 #include <debug-uart.h>
2 #include <sys/stat.h>
3 #include <errno.h>
4 #include <stdio.h>
5 
6 int
7 _open(const char *name, int flags, int mode) {
8  errno = ENOENT;
9  return -1;
10 }
11 
12 int
13 _close(int file)
14 {
15  if (file == 1 || file == 2) {
16  dbg_drain();
17  return 0;
18  }
19  errno = EBADF;
20  return -1;
21 }
22 
23 int
24 isatty(int file)
25 {
26  if (file >= 0 && file <= 2) return 1;
27  return 0;
28 }
29 
30 int
31 _read(int file, char *ptr, int len){
32  return 0;
33 }
34 
35 
36 
37 int
38 _write(int file, const char *ptr, int len){
39  int sent = -1;
40  if (file == 1 || file == 2) {
41  sent = dbg_send_bytes((const unsigned char*)ptr, len);
42  }
43  return sent;
44 }
45 
46 int
47 _lseek(int file, int ptr, int dir){
48  return 0;
49 }
50 
51 int
52 _fstat(int file, struct stat *st) {
53  if (file >= 0 && file <= 2) {
54  st->st_mode = S_IFCHR;
55  return 0;
56  }
57  errno = EBADF;
58  return -1;
59 }
60 
61 int
62 _stat(char *file, struct stat *st) {
63  errno = ENOENT;
64  return -1;
65 }
66 
67 caddr_t
68 _sbrk(int incr)
69 {
70  extern char __heap_start__; /* Defined by the linker */
71  extern char __heap_end__; /* Defined by the linker */
72  static char *heap_end = &__heap_start__;
73  char *prev_heap_end;
74 
75  prev_heap_end = heap_end;
76  if (heap_end + incr > &__heap_end__) {
77  printf("Heap full (requested %d, available %d)\n",
78  incr, (int)(&__heap_end__ - heap_end));
79  errno = ENOMEM;
80  return (caddr_t)-1;
81  }
82 
83  heap_end += incr;
84  return (caddr_t) prev_heap_end;
85 }
86 
87 int
88 fsync(int fd)
89 {
90  if (fd == 1 || fd == 2) {
91  dbg_drain();
92  return 0;
93  }
94  if (fd == 0) return 0;
95  errno = EBADF;
96  return -1;
97 }
98 
99 void
100 _exit(int status)
101 {
102  while(1);
103 }
104 
105 void
106 _abort()
107 {
108  while(1);
109 }
110 
111 void
112 _kill()
113 {
114  while(1);
115 }
116 
117 pid_t
118 _getpid(void)
119 {
120  return 1;
121 }
122 
123 const unsigned long
124 bkpt_instr = 0xe1200070;