Rev 4192 | Rev 4350 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4192 | Rev 4307 | ||
---|---|---|---|
Line 24... | Line 24... | ||
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | */ |
27 | */ |
28 | 28 | ||
29 | /** @addtogroup netif |
29 | /** @addtogroup net |
30 | * @{ |
30 | * @{ |
31 | */ |
31 | */ |
32 | 32 | ||
33 | /** |
33 | /** |
34 | * @file |
34 | * @file |
Line 46... | Line 46... | ||
46 | #include "generic_char_map.h" |
46 | #include "generic_char_map.h" |
47 | #include "module_map.h" |
47 | #include "module_map.h" |
48 | 48 | ||
49 | GENERIC_CHAR_MAP_IMPLEMENT( modules, module_t ) |
49 | GENERIC_CHAR_MAP_IMPLEMENT( modules, module_t ) |
50 | 50 | ||
51 | int add_module( module_ref * module, modules_ref modules, char * name, char * filename, services_t service, task_id_t task_id ){ |
51 | int add_module( module_ref * module, modules_ref modules, char * name, char * filename, services_t service, task_id_t task_id, connect_module_t connect_module ){ |
52 | ERROR_DECLARE; |
52 | ERROR_DECLARE; |
53 | 53 | ||
54 | module_ref tmp_module; |
54 | module_ref tmp_module; |
55 | 55 | ||
56 | tmp_module = ( module_ref ) malloc( sizeof( module_t )); |
56 | tmp_module = ( module_ref ) malloc( sizeof( module_t )); |
Line 59... | Line 59... | ||
59 | tmp_module->phone = 0; |
59 | tmp_module->phone = 0; |
60 | tmp_module->usage = 0; |
60 | tmp_module->usage = 0; |
61 | tmp_module->name = name; |
61 | tmp_module->name = name; |
62 | tmp_module->filename = filename; |
62 | tmp_module->filename = filename; |
63 | tmp_module->service = service; |
63 | tmp_module->service = service; |
- | 64 | tmp_module->connect_module = connect_module; |
|
64 | if( ERROR_OCCURRED( modules_add( modules, tmp_module->name, 0, tmp_module ))){ |
65 | if( ERROR_OCCURRED( modules_add( modules, tmp_module->name, 0, tmp_module ))){ |
65 | free( tmp_module ); |
66 | free( tmp_module ); |
66 | return ERROR_CODE; |
67 | return ERROR_CODE; |
67 | } |
68 | } |
68 | if( module ) * module = tmp_module; |
69 | if( module ) * module = tmp_module; |
Line 78... | Line 79... | ||
78 | if( ! module->task_id ){ |
79 | if( ! module->task_id ){ |
79 | module->task_id = spawn( module->filename ); |
80 | module->task_id = spawn( module->filename ); |
80 | if( ! module->task_id ) return NULL; |
81 | if( ! module->task_id ) return NULL; |
81 | } |
82 | } |
82 | if( ! module->phone ){ |
83 | if( ! module->phone ){ |
83 | module->phone = connect_to_service( module->service ); |
84 | module->phone = module->connect_module( module->service ); |
84 | } |
85 | } |
85 | return module; |
86 | return module; |
86 | } |
87 | } |
87 | 88 | ||
88 | task_id_t spawn( char * fname ){ |
89 | task_id_t spawn( char * fname ){ |