source: trunk/libs/newlib/src/libgloss/arm/linux-syscalls1.c @ 678

Last change on this file since 678 was 444, checked in by satin@…, 7 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 1.2 KB
RevLine 
[444]1/** Linux system call interface.
2 * Written by Shaun Jackman <sjackman@gmail.com>.
3 * Copyright 2006 Pathway Connectivity
4 *
5 * Permission to use, copy, modify, and distribute this software
6 * is freely granted, provided that this notice is preserved.
7 */
8
9#include <errno.h>
10#include <stdint.h>
11
12extern char _end[];
13static void *curbrk = _end;
14
15extern void *_brk(void *addr);
16
17int brk(void *addr)
18{
19        void *newbrk;
20        if (curbrk == addr)
21                return 0;
22        newbrk = _brk(addr);
23        curbrk = newbrk;
24        if (newbrk < addr) {
25                errno = ENOMEM;
26                return -1;
27        }
28        return 0;
29}
30
31void *_sbrk(intptr_t incr)
32{
33        void *oldbrk = curbrk;
34        if (brk(oldbrk + incr) == -1)
35                return (void *)-1;
36        return oldbrk;
37}
38
39void *sbrk(intptr_t incr) __attribute__((alias("_sbrk")));
40
41int _set_errno(int n)
42{
43        if (n < 0) {
44                errno = -n;
45                return -1;
46        }
47        return n;
48}
49
50#include <sys/wait.h>
51
52struct rusage;
53
54pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage);
55
56pid_t _wait(int *status)
57{
58        return wait4(-1, status, 0, NULL);
59}
60
61pid_t waitpid(pid_t pid, int *status, int options)
62{
63        return wait4(pid, status, options, NULL);
64}
65
66extern int _reboot(int magic, int magic2, int flag, void *arg);
67
68int reboot(int flag)
69{
70        return _reboot(0xfee1dead, 0x28121969, flag, NULL);
71}
Note: See TracBrowser for help on using the repository browser.