From 14763d00a0777b7a27eb49eb5f91ac802c05ecb5 Mon Sep 17 00:00:00 2001 From: Kozlov Dmitry Date: Wed, 25 Aug 2010 19:50:32 +0400 Subject: rewriting triton library... --- accel-pptpd/triton/event.c | 155 --------------------------------------------- 1 file changed, 155 deletions(-) delete mode 100644 accel-pptpd/triton/event.c (limited to 'accel-pptpd/triton/event.c') diff --git a/accel-pptpd/triton/event.c b/accel-pptpd/triton/event.c deleted file mode 100644 index 9daa226b..00000000 --- a/accel-pptpd/triton/event.c +++ /dev/null @@ -1,155 +0,0 @@ -#include -#include -#include -#include - -#include "triton_p.h" - -#define EVENTS1_SIZE 1024 - -static __thread struct list_head events2; -static __thread struct event_t *events1; -static __thread long *args; - -asm(".hidden event_init"); - -static struct event_t *find_event(int ev_id); -static struct event_t *create_event(int ev_id); - -void event_init(void) -{ - int i; - args=malloc(MAX_ARGS*sizeof(long)); - events1=(struct event_t *)malloc(EVENTS1_SIZE*sizeof(struct event_t)); - - for (i=0; ievent_func=func; - if (arg_cnt) - { - va_list p; - va_start(p,arg_cnt); - ev_h->arg_cnt=arg_cnt; - ev_h->args=malloc(arg_cnt*sizeof(long)); - #ifdef BROKEN_GCC - for(i=0; iargs+i)=va_arg(p,long); - #else - memcpy(ev_h->args,p,arg_cnt*sizeof(long)); - #endif - va_end(p); - } - - list_add_tail(&ev_h->entry,&ev->handlers); -} -void triton_event_unregister_handler(int ev_id,triton_event_func func) -{ - struct event_t *ev; - struct event_handler_t *ev_h; - - ev=find_event(ev_id); - if (!ev) - return; - - list_for_each_entry(ev_h,&ev->handlers,entry) - { - if (ev_h->event_func==func) - { - list_del(&ev_h->entry); - if (ev_h->args) free(ev_h->args); - free(ev_h); - - if (list_empty(&ev->handlers) && ev_id>=EVENTS1_SIZE) - { - list_del(&ev->entry); - free(ev); - } - return; - } - } -} - -/*#define dyn_call(func,arg_cnt,args)\ - asm("movl %%esp,%%edi;\n\ - movl %0,%%esi;\n\ - movl %1,%%ecx;\n\ - cld;\n\ - rep movsl;\n\ - call *%2;\n"::"m" (args),"m" (arg_cnt),"m" (func):"%edi","%esi","%ecx");*/ - -void triton_event_fire(int ev_id,int arg_cnt,...) -{ - struct event_t *ev; - struct event_handler_t *ev_h; - struct list_head *p1,*p2; - va_list p; - //void *args_p=&args; - //char pp[ARG_OFFSET+MAX_ARGS*sizeof(int)]; - //memcpy(pp,__builtin_apply_args(),ARG_OFFSET); - - ev=find_event(ev_id); - if (!ev) - return; - - list_for_each_safe(p1,p2,&ev->handlers) - { - ev_h=list_entry(p1,struct event_handler_t,entry); - if (ev_h->arg_cnt) memcpy(args,ev_h->args,ev_h->arg_cnt*sizeof(long)); - va_start(p,arg_cnt); - #ifdef BROKEN_GCC - for(i=0; iarg_cnt+i]=va_arg(p,long); - #else - memcpy(args+ev_h->arg_cnt,p,arg_cnt*sizeof(long)); - #endif - //memcpy(pp+ARG_OFFSET,args,(ev_h->arg_cnt+arg_cnt)*sizeof(int)); - //__builtin_apply(ev_h->event_func,pp,ARG_OFFSET+(ev_h->arg_cnt+arg_cnt)*sizeof(int)); - //ev_h->event_func(ev_id,arg); - //__builtin_apply(ev_h->event_func,args_p,(ev_h->arg_cnt+arg_cnt)*sizeof(int)); - dyn_call(ev_h->event_func,ev_h->arg_cnt+arg_cnt,args); - } - - va_end(p); -} - -static struct event_t *find_event(int ev_id) -{ - struct event_t *ev; - if (ev_idev_id==ev_id) - return ev; - } - return NULL; -} -static struct event_t *create_event(int ev_id) -{ - struct event_t *ev=(struct event_t *)malloc(sizeof(struct event_t)); - - INIT_LIST_HEAD(&ev->handlers); - - list_add_tail(&ev->entry,&events2); - - return ev; -} -- cgit v1.2.3