Subversion Repositories HelenOS

Rev

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