Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/drv/generic/driver.c

    r2a770a35 r26fa82bc  
    4747#include <stdlib.h>
    4848#include <str.h>
     49#include <str_error.h>
    4950#include <ctype.h>
    5051#include <errno.h>
     
    273274       
    274275        res = driver->driver_ops->add_device(dev);
    275         if (res == EOK) {
    276                 printf("%s: new device with handle=%" PRIun " was added.\n",
    277                     driver->name, dev_handle);
    278         } else {
    279                 printf("%s: failed to add a new device with handle = %" PRIun ".\n",
    280                     driver->name, dev_handle);
     276        if (res != EOK)
    281277                delete_device(dev);
    282         }
    283278       
    284279        async_answer_0(iid, res);
     
    408403                            get_remote_method(rem_iface, iface_method_idx);
    409404                        if (iface_method_ptr == NULL) {
    410                                 // the interface has not such method
     405                                /* The interface has not such method */
    411406                                printf("%s: driver_connection_gen error - "
    412407                                    "invalid interface method.", driver->name);
     
    661656int ddf_driver_main(driver_t *drv)
    662657{
     658        int rc;
     659
    663660        /*
    664661         * Remember the driver structure - driver_ops will be called by generic
     
    674671       
    675672        /*
    676          * Register driver by device manager with generic handler for incoming
    677          * connections.
     673         * Register driver with device manager using generic handler for
     674         * incoming connections.
    678675         */
    679         devman_driver_register(driver->name, driver_connection);
    680        
     676        rc = devman_driver_register(driver->name, driver_connection);
     677        if (rc != EOK) {
     678                printf("Error: Failed to register driver with device manager "
     679                    "(%s).\n", (rc == EEXISTS) ? "driver already started" :
     680                    str_error(rc));
     681               
     682                return 1;
     683        }
     684       
     685        /* Return success from the task since server has started. */
     686        rc = task_retval(0);
     687        if (rc != EOK)
     688                return 1;
     689
    681690        async_manager();
    682691       
Note: See TracChangeset for help on using the changeset viewer.