linux: COMPILEOPTIONS=-march=i386 -mtune=i586 -fPIC
linux: LINKOPTIONS=-Wl,-export-dynamic -Wl,-rpath,.
linux: LINKOPTIONS=-Wl,-export-dynamic
-linux: INCLUDES=-I/usr/local/include -I../include -I../../include -I.. -I../platform/linux -I../../platform/linux
+linux: INCLUDES=-I/usr/local/include -I../include -I../../include -I.. -I../platform/linux -I../../platform/linux -I../platform
linux: LIBRARIES=-L/usr/local/lib -lnsl -ldl -lm -lX11 -lEGL -lGLESv2
linux: linux-all
@echo "\";" >> src/platform/linux/version.h
@echo "static char* cilux_ciux=\"np\";" >> src/platform/linux/version.h
-cilux: version-lin src/platform/linux/cilux.c src/platform/linux/osapi.c src/platform/kernelapi.c src/include/kernelapi.h src/platform/linux/platform.h
+cilux: version-lin src/platform/linux/cilux.c src/platform/linux/kernelplat.h src/platform/linux/kernelplat.c src/platform/kernelapi.c src/include/kernelapi.h src/platform/linux/platform.h
(cd src/platform/linux; $(CC) $(CCOPTIONS) -c cilux.c -o cilux.o $(COMPILEOPTIONS) $(INCLUDES))
(cd src/platform; $(CC) $(CCOPTIONS) -c kernelapi.c -o kernelapi.o $(COMPILEOPTIONS) $(INCLUDES))
(cd src/platform/linux; $(CC) $(CCOPTIONS) -o ../../../cilux cilux.o ../kernelapi.o $(LINKOPTIONS) $(LIBRARIES))
/* -------------------------------------------------------------------------- */
-#include <math.h>
-
-#include <EGL/egl.h>
-#include <GLES2/gl2.h>
-
#define WINDOW_WIDTH 640
#define WINDOW_HEIGHT 480
return 1;
}
+EXPORT int mid_module_tick(void)
+{
+ if(!drawStuff(WINDOW_WIDTH, WINDOW_HEIGHT)) destroyEGL();
+ return 1;
+}
+
/* -------------------------------------------------------------------------- */
int handles_resource(char* name)
eglSwapBuffers(eglDisplay, eglSurface);
- angle += .001f;
+ angle += .007f;
return !isEGLError("drawStuff");
}
/* ------------------------------------------------------------- */
-#include "X11/Xutil.h"
+#include <X11/Xutil.h>
Window x11Window = 0;
Display* x11Display = 0;
int eof=(len== -1);
if(sof){
- send_ping(chan, "PING ni/0.5" CRLF, 0);
+ send_ping(chan, "PING ni/0.5", 0);
return 0;
}
}
if(ping){
char* from=use_ping_info(ent_head, chan);
- if(from) send_ping(chan, "ni/0.5 270 PING" CRLF, from);
+ if(from) send_ping(chan, "ni/0.5 270 PING", from);
ni_event_delete(evq);
return;
}
int ln=0;
int bufsize=TMPBUFSIZE;
- ln+=snprintf(tmpbuf+ln, bufsize-ln, firstline);
+ ln+=snprintf(tmpbuf+ln, bufsize-ln, "%s" CRLF, firstline);
if(ln>=bufsize) return;
ln+=snprintf(tmpbuf+ln, bufsize-ln, "From: %s" CRLF, from);
if(ln>=bufsize) return;
connection_writable);
int pingtodeath=0;
- if(chan && pingtodeath) send_ping(chan, "PING ni/0.5" CRLF, 0);
+ if(chan && pingtodeath) send_ping(chan, "PING ni/0.5", 0);
}
char* generate_new_hostname(k_hashtable* ent_head, k_channel* chan)
/* -------------------------------------------------------------------------- */
-PUBLIC CONSOLE k_console;
PUBLIC char* k_version;
PUBLIC char* k_ciux;
PUBLIC void (*k_terminate)(void);
/* -------------------------------------------------------------------------- */
-
#endif
-
-
#define PUBLIC EXPORT
#include <kernelapi.h>
-#include <osapi.h>
-#include "container.h"
+#include <kernelplat.h>
+#include <container.h>
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
-#include <osapi.c>
+#include <kernelplat.c>
/* -------------------------------------------------------------------------- */
-#include <sys/types.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <grp.h>
-
-#include <platform.h>
+#include <kernelplat.h>
#include <container.h>
-#include "version.h"
+#include <version.h>
/* -------------------------------------------------------------------------- */
--- /dev/null
+
+/* -------------------------------------------------------------------------- */
+
+#include <errno.h>
+#include <dlfcn.h>
+#include <stdarg.h>
+#include <signal.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <netdb.h>
+#include <dirent.h>
+
+/* -------------------------------------------------------------------------- */
+
+static fd_set rd_fd_set;
+static fd_set wr_fd_set;
+static fd_set ex_fd_set;
+
+/* -------------------------------------------------------------------------- */
+
+static void signal_terminate(int);
+static void signal_alarm(int);
+static void signal_other(int);
+static void set_timeval_ms(struct timeval* t, int ms);
+
+/* -------------------------------------------------------------------------- */
+
+void init_thread(void)
+{
+ signal(SIGTERM, signal_terminate);
+ signal(SIGINT, signal_terminate);
+ signal(SIGQUIT, signal_terminate);
+ signal(SIGALRM, signal_alarm);
+ signal(SIGPIPE, signal_other);
+ signal(SIGCHLD, SIG_IGN);
+ signal(SIGHUP, SIG_IGN);
+ signal(SIGUSR1, SIG_IGN);
+ signal(SIGUSR2, SIG_IGN);
+}
+
+void init_gl(void)
+{
+}
+
+void init_net(void)
+{
+ FD_ZERO(&rd_fd_set);
+ FD_ZERO(&wr_fd_set);
+ FD_ZERO(&ex_fd_set);
+}
+
+/* -------------------------------------------------------------------------- */
+
+OTHER_THREAD void signal_terminate(int signum)
+{
+ c_running(0);
+}
+
+OTHER_THREAD void signal_alarm(int signum)
+{
+ c_signal(signum);
+}
+
+OTHER_THREAD void signal_other(int signum)
+{
+ c_signal(signum);
+}
+
+/* -------------------------------------------------------------------------- */
+
+void set_callback(k_channel* chan, int rdwr)
+{
+ if(rdwr & SETCB_RD) FD_SET(chan->priv->SOCK, &rd_fd_set);
+ if(rdwr & SETCB_WR) FD_SET(chan->priv->SOCK, &wr_fd_set);
+}
+
+void un_set_callback(k_channel* chan, int rdwr)
+{
+ if(rdwr & SETCB_RD) FD_CLR(chan->priv->SOCK, &rd_fd_set);
+ if(rdwr & SETCB_WR) FD_CLR(chan->priv->SOCK, &wr_fd_set);
+}
+
+void poller(int no_block)
+{
+ fd_set rd=rd_fd_set;
+ fd_set wr=wr_fd_set;
+ fd_set ex=ex_fd_set;
+
+ k_channel* chan;
+
+ int highest=0;
+ for(chan=k_channels; chan; chan=chan->next){
+ if(chan->priv->state==CHAN_CLOSE) continue;
+ if(highest < chan->priv->SOCK) highest=chan->priv->SOCK;
+ }
+
+ struct timeval t;
+ struct timeval* tp=&t;
+ set_timeval_ms(tp, no_block? 0: LOOP_TICK);
+
+ if(highest==0){
+ select(0, 0, 0, 0, tp);
+ next_keys();
+ if(!no_block) do_regular_things();
+ return;
+ }
+
+ int len=select(highest+1, &rd, &wr, &ex, tp);
+ GETERRNO(len);
+
+ next_keys();
+
+ if(len==0){
+ do_regular_things();
+ return;
+ }
+ if(len== -1){
+ if(ERRNO==INTERRUPTED) return;
+ log_net_err("select", ERRNO);
+ sleep(1);
+ do_regular_things();
+ return;
+ }
+
+ for(chan=k_channels; chan; chan=chan->next){
+ if(FD_ISSET(chan->priv->SOCK, &ex)){
+ exception_socket(chan);
+ continue;
+ }
+ if(FD_ISSET(chan->priv->SOCK, &wr)){
+ int err; socklen_t len=sizeof(int);
+ if(getsockopt(chan->priv->SOCK,
+ SOL_SOCKET,
+ SO_ERROR, &err, &len) || err){
+ exception_socket(chan);
+ continue;
+ }
+ else{
+ writeable_socket(chan);
+ }
+ }
+ if(FD_ISSET(chan->priv->SOCK, &rd)){
+ readable_socket(chan);
+ }
+ }
+}
+
+void set_timeval_ms(struct timeval* t, int ms)
+{
+ t->tv_sec=ms/1000;
+ t->tv_usec=(ms-(t->tv_sec)*1000)*1000;
+}
+
+char* str_error(int e)
+{
+ return strerror(e);
+}
+
+/* -------------------------------------------------------------------------- */
+
+void stat_only(char* fullname, k_stat* kstat)
+{
+ kstat->type=0;
+ struct stat s;
+ if(stat(fullname, &s)) return;
+ kstat->type=s.st_mode & 0170000;
+ kstat->size=s.st_size;
+ kstat->time=s.st_mtime;
+ kstat->perm=s.st_mode & 0007777;
+}
+
+FILE_T stat_open(char* fullname, k_stat* kstat)
+{
+ stat_only(fullname, kstat);
+ if(!kstat->type) return 0;
+ FILE_T filehandle=open(fullname, O_RDONLY);
+ if(filehandle<0) return 0;
+ return filehandle;
+}
+
+FILE_T open_only(char* fullname, int wr)
+{
+ int rw=wr? O_RDWR|O_CREAT|O_TRUNC: O_RDONLY;
+ FILE_T filehandle=open(fullname, rw, 0644);
+ if(filehandle<0) return 0;
+ return filehandle;
+}
+
+void* mmap_malloc(void* s, size_t size, int prot, int f, char* fullname, int o)
+{
+ FILE_T fh=open(fullname, O_RDONLY, 0644);
+ if(fh<0) return MAP_FAILED;
+
+ char* data=k_malloc(size);
+ int charsread=0;
+ int len;
+ do{
+ len=read(fh, data+charsread, size-charsread);
+ if(len< 0 && FERRNO(len)==EINTR) continue;
+ if(len<=0) break;
+ charsread+=len;
+ } while(charsread<size);
+
+ close(fh);
+ if(len<0 || charsread!=size){ k_free(data); return MAP_FAILED; }
+ return data;
+}
+
+void* mmap_name(void* s, size_t size, int prot, int f, char* fullname, int o)
+{
+ if(!size) return MAP_FAILED;
+ int w=(prot & PROT_WRITE);
+ FILE_T fh=open(fullname, (w? O_RDWR|O_CREAT: O_RDONLY), 0644);
+ if(fh<0) return MAP_FAILED;
+ return mmap(s, size, prot, f, fh, o);
+}
+
+/* -------------------------------------------------------------------------- */
+
+EXPORT void k_random_bytes(char* buf, size_t size)
+{
+ *(short*)buf=getpid();
+ if(size!=2) k_log_err("Linux randomness not implemented yet!");
+}
+
+/* -------------------------------------------------------------------------- */
+
+EXPORT void* k_malloc(size_t size)
+{
+ void* p=malloc(size);
+ if(!p){
+ k_fatal(OOM_STRING);
+ }
+ return p;
+}
+
+EXPORT void* k_realloc(void* o, size_t size)
+{
+ void* p=realloc(o, size);
+ if(!p){
+ k_fatal(OOM_STRING);
+ }
+ return p;
+}
+
+EXPORT void k_free(void* o)
+{
+ if(o) free(o);
+}
+
+EXPORT char* k_strdup(char* s)
+{
+ if(!s) return 0;
+ char* p=strdup(s);
+ if(!p){
+ k_fatal(OOM_STRING);
+ }
+ return p;
+}
+
+EXPORT void* k_memdup(void* s, size_t size)
+{
+ void* p=malloc(size);
+ if(!p){
+ k_fatal(OOM_STRING);
+ }
+ memcpy(p, s, size);
+ return p;
+}
+
+/* -------------------------------------------------------------------------- */
+
--- /dev/null
+
+/* -------------------------------------------------------------------------- */
+
+#include <ctype.h>
+#include <unistd.h>
+#include <pwd.h>
+#include <grp.h>
+#include <netinet/tcp.h>
+#include <arpa/inet.h>
+
+#include <platform.h>
+
+/* -------------------------------------------------------------------------- */
+
+#define LOAD_MODULES_EARLY 1
+#define LOAD_GL 0
+#define MODULE void*
+#define MODPRE "mod-"
+#define MODPOST ".so"
+#define DLOPEN(n) dlopen(n, RTLD_GLOBAL|RTLD_NOW)
+#define DLSYM dlsym
+#define DLERROR dlerror()
+#define LOOP_TICK 10
+#define LINGER_LOOPS 500
+
+#define EMPTY_IN_ADDR { 0 }
+#define SOCK fd
+#define SOCK_T int
+#define SOCKET(a,t,p,s) s=socket(a,t,p)
+#define ACCEPT(as,a,l,s) s=accept(as,a,l)
+#define BIND bind
+#define LISTEN listen
+#define CONNECT connect
+#define SOCKET_READ( s,b,l) recv(s,b,l,MSG_NOSIGNAL)
+#define SOCKET_WRITE(s,b,l) send(s,b,l,MSG_NOSIGNAL)
+#define SOCKET_CLOSE close
+#define SET_NON_BLOCKING(s) int f=fcntl(s, F_GETFL); if(f!=-1) fcntl(s, F_SETFL, f|O_NONBLOCK)
+#define SET_NO_DELAY(s) int arg=1; r=setsockopt(s, SOL_TCP, TCP_NODELAY, (char*)&arg, sizeof(arg))
+#define SET_REUSEADDR(s) int arg=1; r=setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char*)&arg, sizeof(arg))
+#define GETERRNO(n)
+#define ERRNO errno
+#define INTERRUPTED EINTR
+#define NOTACTIVE EWOULDBLOCK
+#define ISCONNECTING(e) (e==EINPROGRESS || e==EALREADY)
+#define ISNOTACTIVE(e) (e==EAGAIN || e==EWOULDBLOCK)
+
+#define FILEP FILE*
+#define FILE_T int
+#define FOPEN fopen
+#define READFILE read
+#define WRITEFILE write
+#define MKDIR(n) mkdir(n, 0777)
+#define FPRINTF fprintf
+#define FFLUSH(f) fflush(f)
+#define FCLOSE(f) close(f)
+#define PRINTFOUT(f) printf(f)
+#define PRINTFERR(f) fprintf(stderr,f)
+#define VPRINTFOUT(f,ap) vprintf(f,ap)
+#define VPRINTFERR(f,ap) vfprintf(stderr,f,ap)
+#define FERRNO(n) errno
+#define EXIT(n) exit(n)
+#define LOG_TO_STD 0
+
+#define TIMEZONE(tm) tm->tm_gmtoff
+#define SLEEP_MS(x) do{struct timeval t;t.tv_sec=0;t.tv_usec=(x)*1000;select(0,0,0,0,&t);}while(0)
+#define MKTIME mktime
+
+/* -------------------------------------------------------------------------- */
+
+#define CONSOLE void*
+#define C_RUN_RV int
+#define C_RUN_ARG void*
+
+PUBLIC CONSOLE k_console;
+
+/* -------------------------------------------------------------------------- */
+
+++ /dev/null
-
-/* -------------------------------------------------------------------------- */
-
-#include <errno.h>
-#include <dlfcn.h>
-#include <stdarg.h>
-#include <signal.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <netdb.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <unistd.h>
-
-/* -------------------------------------------------------------------------- */
-
-static fd_set rd_fd_set;
-static fd_set wr_fd_set;
-static fd_set ex_fd_set;
-
-/* -------------------------------------------------------------------------- */
-
-static void signal_terminate(int);
-static void signal_alarm(int);
-static void signal_other(int);
-static void set_timeval_ms(struct timeval* t, int ms);
-
-/* -------------------------------------------------------------------------- */
-
-void init_thread(void)
-{
- signal(SIGTERM, signal_terminate);
- signal(SIGINT, signal_terminate);
- signal(SIGQUIT, signal_terminate);
- signal(SIGALRM, signal_alarm);
- signal(SIGPIPE, signal_other);
- signal(SIGCHLD, SIG_IGN);
- signal(SIGHUP, SIG_IGN);
- signal(SIGUSR1, SIG_IGN);
- signal(SIGUSR2, SIG_IGN);
-}
-
-void init_gl(void)
-{
-}
-
-void init_net(void)
-{
- FD_ZERO(&rd_fd_set);
- FD_ZERO(&wr_fd_set);
- FD_ZERO(&ex_fd_set);
-}
-
-/* -------------------------------------------------------------------------- */
-
-OTHER_THREAD void signal_terminate(int signum)
-{
- c_running(0);
-}
-
-OTHER_THREAD void signal_alarm(int signum)
-{
- c_signal(signum);
-}
-
-OTHER_THREAD void signal_other(int signum)
-{
- c_signal(signum);
-}
-
-/* -------------------------------------------------------------------------- */
-
-void set_callback(k_channel* chan, int rdwr)
-{
- if(rdwr & SETCB_RD) FD_SET(chan->priv->SOCK, &rd_fd_set);
- if(rdwr & SETCB_WR) FD_SET(chan->priv->SOCK, &wr_fd_set);
-}
-
-void un_set_callback(k_channel* chan, int rdwr)
-{
- if(rdwr & SETCB_RD) FD_CLR(chan->priv->SOCK, &rd_fd_set);
- if(rdwr & SETCB_WR) FD_CLR(chan->priv->SOCK, &wr_fd_set);
-}
-
-void poller(int no_block)
-{
- fd_set rd=rd_fd_set;
- fd_set wr=wr_fd_set;
- fd_set ex=ex_fd_set;
-
- k_channel* chan;
-
- int highest=0;
- for(chan=k_channels; chan; chan=chan->next){
- if(chan->priv->state==CHAN_CLOSE) continue;
- if(highest < chan->priv->SOCK) highest=chan->priv->SOCK;
- }
-
- struct timeval t;
- struct timeval* tp=&t;
- set_timeval_ms(tp, no_block? 0: LOOP_TICK);
-
- if(highest==0){
- select(0, 0, 0, 0, tp);
- next_keys();
- if(!no_block) do_regular_things();
- return;
- }
-
- int len=select(highest+1, &rd, &wr, &ex, tp);
- GETERRNO(len);
-
- next_keys();
-
- if(len==0){
- do_regular_things();
- return;
- }
- if(len== -1){
- if(ERRNO==INTERRUPTED) return;
- log_net_err("select", ERRNO);
- sleep(1);
- do_regular_things();
- return;
- }
-
- for(chan=k_channels; chan; chan=chan->next){
- if(FD_ISSET(chan->priv->SOCK, &ex)){
- exception_socket(chan);
- continue;
- }
- if(FD_ISSET(chan->priv->SOCK, &wr)){
- int err; socklen_t len=sizeof(int);
- if(getsockopt(chan->priv->SOCK,
- SOL_SOCKET,
- SO_ERROR, &err, &len) || err){
- exception_socket(chan);
- continue;
- }
- else{
- writeable_socket(chan);
- }
- }
- if(FD_ISSET(chan->priv->SOCK, &rd)){
- readable_socket(chan);
- }
- }
-}
-
-void set_timeval_ms(struct timeval* t, int ms)
-{
- t->tv_sec=ms/1000;
- t->tv_usec=(ms-(t->tv_sec)*1000)*1000;
-}
-
-char* str_error(int e)
-{
- return strerror(e);
-}
-
-/* -------------------------------------------------------------------------- */
-
-void stat_only(char* fullname, k_stat* kstat)
-{
- kstat->type=0;
- struct stat s;
- if(stat(fullname, &s)) return;
- kstat->type=s.st_mode & 0170000;
- kstat->size=s.st_size;
- kstat->time=s.st_mtime;
- kstat->perm=s.st_mode & 0007777;
-}
-
-FILE_T stat_open(char* fullname, k_stat* kstat)
-{
- stat_only(fullname, kstat);
- if(!kstat->type) return 0;
- FILE_T filehandle=open(fullname, O_RDONLY);
- if(filehandle<0) return 0;
- return filehandle;
-}
-
-FILE_T open_only(char* fullname, int wr)
-{
- int rw=wr? O_RDWR|O_CREAT|O_TRUNC: O_RDONLY;
- FILE_T filehandle=open(fullname, rw, 0644);
- if(filehandle<0) return 0;
- return filehandle;
-}
-
-void* mmap_malloc(void* s, size_t size, int prot, int f, char* fullname, int o)
-{
- FILE_T fh=open(fullname, O_RDONLY, 0644);
- if(fh<0) return MAP_FAILED;
-
- char* data=k_malloc(size);
- int charsread=0;
- int len;
- do{
- len=read(fh, data+charsread, size-charsread);
- if(len< 0 && FERRNO(len)==EINTR) continue;
- if(len<=0) break;
- charsread+=len;
- } while(charsread<size);
-
- close(fh);
- if(len<0 || charsread!=size){ k_free(data); return MAP_FAILED; }
- return data;
-}
-
-void* mmap_name(void* s, size_t size, int prot, int f, char* fullname, int o)
-{
- if(!size) return MAP_FAILED;
- int w=(prot & PROT_WRITE);
- FILE_T fh=open(fullname, (w? O_RDWR|O_CREAT: O_RDONLY), 0644);
- if(fh<0) return MAP_FAILED;
- return mmap(s, size, prot, f, fh, o);
-}
-
-/* -------------------------------------------------------------------------- */
-
-EXPORT void k_random_bytes(char* buf, size_t size)
-{
- *(short*)buf=getpid();
- if(size!=2) k_log_err("Linux randomness not implemented yet!");
-}
-
-/* -------------------------------------------------------------------------- */
-
-EXPORT void* k_malloc(size_t size)
-{
- void* p=malloc(size);
- if(!p){
- k_fatal(OOM_STRING);
- }
- return p;
-}
-
-EXPORT void* k_realloc(void* o, size_t size)
-{
- void* p=realloc(o, size);
- if(!p){
- k_fatal(OOM_STRING);
- }
- return p;
-}
-
-EXPORT void k_free(void* o)
-{
- if(o) free(o);
-}
-
-EXPORT char* k_strdup(char* s)
-{
- if(!s) return 0;
- char* p=strdup(s);
- if(!p){
- k_fatal(OOM_STRING);
- }
- return p;
-}
-
-EXPORT void* k_memdup(void* s, size_t size)
-{
- void* p=malloc(size);
- if(!p){
- k_fatal(OOM_STRING);
- }
- memcpy(p, s, size);
- return p;
-}
-
-/* -------------------------------------------------------------------------- */
-
+++ /dev/null
-
-/* -------------------------------------------------------------------------- */
-
-#define LOAD_MODULES_EARLY 1
-#define LOAD_GL 0
-#define MODULE void*
-#define MODPRE "mod-"
-#define MODPOST ".so"
-#define DLOPEN(n) dlopen(n, RTLD_GLOBAL|RTLD_NOW)
-#define DLSYM dlsym
-#define DLERROR dlerror()
-#define LOOP_TICK 10
-#define LINGER_LOOPS 500
-
-#define EMPTY_IN_ADDR { 0 }
-#define SOCK fd
-#define SOCK_T int
-#define SOCKET(a,t,p,s) s=socket(a,t,p)
-#define ACCEPT(as,a,l,s) s=accept(as,a,l)
-#define BIND bind
-#define LISTEN listen
-#define CONNECT connect
-#define SOCKET_READ( s,b,l) recv(s,b,l,MSG_NOSIGNAL)
-#define SOCKET_WRITE(s,b,l) send(s,b,l,MSG_NOSIGNAL)
-#define SOCKET_CLOSE close
-#define SET_NON_BLOCKING(s) int f=fcntl(s, F_GETFL); if(f!=-1) fcntl(s, F_SETFL, f|O_NONBLOCK)
-#define SET_NO_DELAY(s) int arg=1; r=setsockopt(s, SOL_TCP, TCP_NODELAY, (char*)&arg, sizeof(arg))
-#define SET_REUSEADDR(s) int arg=1; r=setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char*)&arg, sizeof(arg))
-#define GETERRNO(n)
-#define ERRNO errno
-#define INTERRUPTED EINTR
-#define NOTACTIVE EWOULDBLOCK
-#define ISCONNECTING(e) (e==EINPROGRESS || e==EALREADY)
-#define ISNOTACTIVE(e) (e==EAGAIN || e==EWOULDBLOCK)
-
-#define FILEP FILE*
-#define FILE_T int
-#define FOPEN fopen
-#define READFILE read
-#define WRITEFILE write
-#define MKDIR(n) mkdir(n, 0777)
-#define FPRINTF fprintf
-#define FFLUSH(f) fflush(f)
-#define FCLOSE(f) close(f)
-#define PRINTFOUT(f) printf(f)
-#define PRINTFERR(f) fprintf(stderr,f)
-#define VPRINTFOUT(f,ap) vprintf(f,ap)
-#define VPRINTFERR(f,ap) vfprintf(stderr,f,ap)
-#define FERRNO(n) errno
-#define EXIT(n) exit(n)
-#define LOG_TO_STD 0
-
-#define TIMEZONE(tm) tm->tm_gmtoff
-#define SLEEP_MS(x) do{struct timeval t;t.tv_sec=0;t.tv_usec=(x)*1000;select(0,0,0,0,&t);}while(0)
-#define MKTIME mktime
-
-/* -------------------------------------------------------------------------- */
-
#ifndef LINUX_PLATFORM_H
#define LINUX_PLATFORM_H
+#include <stdlib.h>
#include <string.h>
-#include <malloc.h>
#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
#include <time.h>
-#include <sys/socket.h>
+#include <math.h>
#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <arpa/inet.h>
-
-#define MMAPSIZE (128*1024)
+#include <EGL/egl.h>
+#include <GLES2/gl2.h>
#ifndef PUBLIC
#define PUBLIC extern
#endif
#define EXPORT
-#define CONSOLE void*
-#define C_RUN_RV int
-#define C_RUN_ARG void*
-
#endif
-