=============================================================================== TOPIC: threads ABSTRACT: this file describes how threads are managed by ettercap NOTE: none =============================================================================== ettercap uses the pthread library to manage internal threads. the file ec_threads.c gives to the developer some wrapper to create ettercap threads. in the file ec_thread.h we find these functions: char * ec_thread_getname(pthread_t id); to get the name of a thread. this is only useful for debugging purpose. the DEBUG_MSG macro prints the name of the thread and then the message, so you can easily know which thread is doing what. pthread_t ec_thread_getpid(char *name); to get the pid of a given thread. it is used to kill a thread previously created with a specific name. void ec_thread_register(pthread_t id, char *name, char *desc); to give a name and a description to a thread. pthread_t ec_thread_new(char *name, char *desc, void *(*function)(void *), void *args); to create a thread. the third parameter is the function that will become the main of the thread. the fourth parameter is used to pass a parameter to the thread. void ec_thread_init(void); this function must be called by the newly created thread to synchronize with the thread that has created it. it unlock a special mutex, so it is mandatory to perform this action, else ettercap will lockup. void ec_thread_destroy(pthread_t id); to kill a thread. ettercap uses the pthread_join inside this function. this is because we have to wait that the thread has finished its clean up before continuing with other operations. void ec_thread_kill_all(void); to kill all the thread but the caller of the function itself :) EOF