From: David Given Date: Sat, 23 Jun 2018 11:05:27 +0000 (+0200) Subject: Made the rpi platform work with the new libc layout. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=3e40374297619108c5f10d0bcb20b23c397a54ff;p=ack.git Made the rpi platform work with the new libc layout. --- diff --git a/build.lua b/build.lua index 8a765c032..09142dbd1 100644 --- a/build.lua +++ b/build.lua @@ -14,7 +14,7 @@ vars.plats = { "osxppc", -- --"qemuppc", "pc86", --- "rpi", + "rpi", -- "pdpv7", -- "em22", } diff --git a/plat/rpi/include/build.lua b/plat/rpi/include/build.lua index 105f05988..e568b6a5e 100644 --- a/plat/rpi/include/build.lua +++ b/plat/rpi/include/build.lua @@ -11,8 +11,8 @@ end addheader("ack/plat.h") addheader("pi.h") addheader("sys/select.h") +addheader("sys/types.h") addheader("termios.h") -addheader("unistd.h") acklibrary { name = "headers", diff --git a/plat/rpi/include/sys/select.h b/plat/rpi/include/sys/select.h index df7488da4..d126bbf10 100644 --- a/plat/rpi/include/sys/select.h +++ b/plat/rpi/include/sys/select.h @@ -8,6 +8,16 @@ #ifndef _SYS_SELECT_H #define _SYS_SELECT_H -#include +#include + +typedef uint32_t fd_set; + +extern int select(int nfds, fd_set *readfds, fd_set *writefds, + fd_set *exceptfds, struct timeval *timeout); + +#define FD_ZERO(set) do { *set = 0; } while (0) +#define FD_SET(fd, set) do { *set |= (1< -#include - -/* Types */ - -typedef int pid_t; -typedef int mode_t; - -typedef long suseconds_t; - -/* Time handling. */ - -struct timeval -{ - time_t tv_sec; - suseconds_t tv_usec; -}; - -struct timezone -{ - int tz_minuteswest; - int tz_dsttime; -}; /* obsolete, unused */ - -extern int gettimeofday(struct timeval* tv, struct timezone* tz); -extern int settimeofday(const struct timeval* tv, const struct timezone* tz); - -/* Constants for file access (open and friends) */ - -enum -{ - O_ACCMODE = 0x3, - - O_RDONLY = 0, - O_WRONLY = 1, - O_RDWR = 2, - - O_CREAT = 0100, - O_TRUNC = 01000, - O_APPEND = 02000, - O_NONBLOCK = 04000 -}; - -/* Special variables */ - -extern char** environ; - -/* Implemented system calls */ - -extern void _exit(int); -extern pid_t getpid(void); -extern void* sbrk(int increment); -extern int isatty(int d); -extern off_t lseek(int fildes, off_t offset, int whence); -extern int close(int d); -extern int open(const char* path, int access, ...); -extern int creat(const char* path, mode_t mode); -extern int read(int fd, void* buffer, size_t count); -extern int write(int fd, void* buffer, size_t count); -extern int unlink(const char* path); - -/* Unimplemented system calls (these are just prototypes to let the library - * compile). */ - -extern int fcntl(int fd, int op, ...); - -/* Signal handling */ - -typedef int sig_atomic_t; - -#define SIG_ERR ((sighandler_t) -1) /* Error return. */ -#define SIG_DFL ((sighandler_t) 0) /* Default action. */ -#define SIG_IGN ((sighandler_t) 1) /* Ignore signal. */ - -#define SIGABRT 6 /* Abort (ANSI) */ -#define SIGILL 11 /* Illegal instruction */ - -#define _NSIG 32 /* Biggest signal number + 1 - (not including real-time signals). */ -typedef void (*sighandler_t)(int); -extern sighandler_t signal(int signum, sighandler_t handler); -extern int raise(int signum); -extern int kill(pid_t pid, int sig); - -/* Select */ - -typedef uint32_t fd_set; - -extern int select(int nfds, fd_set *readfds, fd_set *writefds, - fd_set *exceptfds, struct timeval *timeout); - -#define FD_ZERO(set) do { *set = 0; } while (0) -#define FD_SET(fd, set) do { *set |= (1< #include "libsys.h" -int read(int fd, void* buffer, size_t count) +ssize_t read(int fd, void* buffer, size_t count) { char i; diff --git a/plat/rpi/libsys/select.c b/plat/rpi/libsys/select.c index 280bfd694..4ea87e76c 100644 --- a/plat/rpi/libsys/select.c +++ b/plat/rpi/libsys/select.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include "libsys.h" diff --git a/plat/rpi/libsys/write.c b/plat/rpi/libsys/write.c index 0fba49884..29cae0c38 100644 --- a/plat/rpi/libsys/write.c +++ b/plat/rpi/libsys/write.c @@ -20,7 +20,7 @@ void _sys_write_tty(char c) _sys_rawwrite('\r'); } -int write(int fd, void* buffer, size_t count) +ssize_t write(int fd, void* buffer, size_t count) { int i; char* p = buffer;