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 ){ |