From 6f258011f97dc65ad949b27928414b73bd07edde Mon Sep 17 00:00:00 2001 From: user Date: Fri, 13 Mar 2009 11:25:18 +0000 Subject: [PATCH] optimising includes --- makefile | 4 +- src/drivers/mid/mid.c | 15 ++- src/drivers/np/np.c | 4 +- src/drivers/np/uri2chan.c | 4 +- src/include/kernelapi.h | 4 - src/platform/kernelapi.c | 6 +- src/platform/linux/cilux.c | 9 +- src/platform/linux/kernelplat.c | 273 ++++++++++++++++++++++++++++++++++++++ src/platform/linux/kernelplat.h | 77 +++++++++++ src/platform/linux/osapi.c | 275 --------------------------------------- src/platform/linux/osapi.h | 58 --------- src/platform/linux/platform.h | 17 +-- 12 files changed, 373 insertions(+), 373 deletions(-) create mode 100644 src/platform/linux/kernelplat.c create mode 100644 src/platform/linux/kernelplat.h delete mode 100644 src/platform/linux/osapi.c delete mode 100644 src/platform/linux/osapi.h diff --git a/makefile b/makefile index 819de9b..15c0fff 100644 --- a/makefile +++ b/makefile @@ -15,7 +15,7 @@ linux: CCOPTIONS=-g -O -Wall -Wimplicit 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 @@ -33,7 +33,7 @@ version-lin: @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)) diff --git a/src/drivers/mid/mid.c b/src/drivers/mid/mid.c index c4458bc..e18f352 100644 --- a/src/drivers/mid/mid.c +++ b/src/drivers/mid/mid.c @@ -7,11 +7,6 @@ /* -------------------------------------------------------------------------- */ -#include - -#include -#include - #define WINDOW_WIDTH 640 #define WINDOW_HEIGHT 480 @@ -80,6 +75,12 @@ EXPORT int mid_module_event(void* data) return 1; } +EXPORT int mid_module_tick(void) +{ + if(!drawStuff(WINDOW_WIDTH, WINDOW_HEIGHT)) destroyEGL(); + return 1; +} + /* -------------------------------------------------------------------------- */ int handles_resource(char* name) @@ -466,7 +467,7 @@ int drawStuff(int width, int height) eglSwapBuffers(eglDisplay, eglSurface); - angle += .001f; + angle += .007f; return !isEGLError("drawStuff"); } @@ -481,7 +482,7 @@ void deleteStuff(){ /* ------------------------------------------------------------- */ -#include "X11/Xutil.h" +#include Window x11Window = 0; Display* x11Display = 0; diff --git a/src/drivers/np/np.c b/src/drivers/np/np.c index e72616b..b33dc10 100644 --- a/src/drivers/np/np.c +++ b/src/drivers/np/np.c @@ -148,7 +148,7 @@ int connection_writable(k_channel* chan, int bufpos, int len) 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; } @@ -224,7 +224,7 @@ void recv_request(k_channel* chan, char* header) } 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; } diff --git a/src/drivers/np/uri2chan.c b/src/drivers/np/uri2chan.c index b4de726..26b05f2 100644 --- a/src/drivers/np/uri2chan.c +++ b/src/drivers/np/uri2chan.c @@ -114,7 +114,7 @@ void send_ping(k_channel* chan, char* firstline, char* to) 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; @@ -237,7 +237,7 @@ void ping_this(void* arg, char* key, void* val) 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) diff --git a/src/include/kernelapi.h b/src/include/kernelapi.h index c659303..0425d02 100644 --- a/src/include/kernelapi.h +++ b/src/include/kernelapi.h @@ -10,7 +10,6 @@ /* -------------------------------------------------------------------------- */ -PUBLIC CONSOLE k_console; PUBLIC char* k_version; PUBLIC char* k_ciux; PUBLIC void (*k_terminate)(void); @@ -212,7 +211,4 @@ PUBLIC void k_fatal( char* format, ...); /* -------------------------------------------------------------------------- */ - #endif - - diff --git a/src/platform/kernelapi.c b/src/platform/kernelapi.c index 86c406b..eb2ab0f 100644 --- a/src/platform/kernelapi.c +++ b/src/platform/kernelapi.c @@ -3,8 +3,8 @@ #define PUBLIC EXPORT #include -#include -#include "container.h" +#include +#include /* -------------------------------------------------------------------------- */ @@ -149,7 +149,7 @@ static void init_hashtables(void); /* -------------------------------------------------------------------------- */ -#include +#include /* -------------------------------------------------------------------------- */ diff --git a/src/platform/linux/cilux.c b/src/platform/linux/cilux.c index 009d621..2c9e301 100644 --- a/src/platform/linux/cilux.c +++ b/src/platform/linux/cilux.c @@ -1,12 +1,7 @@ -#include -#include -#include -#include - -#include +#include #include -#include "version.h" +#include /* -------------------------------------------------------------------------- */ diff --git a/src/platform/linux/kernelplat.c b/src/platform/linux/kernelplat.c new file mode 100644 index 0000000..a018dfd --- /dev/null +++ b/src/platform/linux/kernelplat.c @@ -0,0 +1,273 @@ + +/* -------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* -------------------------------------------------------------------------- */ + +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 +#include +#include +#include +#include +#include + +#include + +/* -------------------------------------------------------------------------- */ + +#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; + +/* -------------------------------------------------------------------------- */ + diff --git a/src/platform/linux/osapi.c b/src/platform/linux/osapi.c deleted file mode 100644 index 96d64b7..0000000 --- a/src/platform/linux/osapi.c +++ /dev/null @@ -1,275 +0,0 @@ - -/* -------------------------------------------------------------------------- */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* -------------------------------------------------------------------------- */ - -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(charsreadtm_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 - -/* -------------------------------------------------------------------------- */ - diff --git a/src/platform/linux/platform.h b/src/platform/linux/platform.h index 85c1e52..b657cb4 100644 --- a/src/platform/linux/platform.h +++ b/src/platform/linux/platform.h @@ -1,27 +1,18 @@ #ifndef LINUX_PLATFORM_H #define LINUX_PLATFORM_H +#include #include -#include #include -#include -#include #include -#include +#include #include -#include -#include - -#define MMAPSIZE (128*1024) +#include +#include #ifndef PUBLIC #define PUBLIC extern #endif #define EXPORT -#define CONSOLE void* -#define C_RUN_RV int -#define C_RUN_ARG void* - #endif - -- 1.7.9.5