Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/test1/test1.c

    rfc51296 r3fddb55  
    3535#include <str_error.h>
    3636#include <ddf/driver.h>
    37 #include <ddf/log.h>
    3837
    3938#include "test1.h"
     
    5958 */
    6059static int register_fun_verbose(ddf_dev_t *parent, const char *message,
    61     const char *name, const char *match_id, int match_score)
     60    const char *name, const char *match_id, int match_score,
     61    int expected_rc)
    6262{
    63         ddf_fun_t *fun;
     63        ddf_fun_t *fun = NULL;
    6464        int rc;
    6565
    66         ddf_msg(LVL_DEBUG, "Registering function `%s': %s.\n", name, message);
     66        printf(NAME ": registering function `%s': %s.\n", name, message);
    6767
    6868        fun = ddf_fun_create(parent, fun_inner, name);
    6969        if (fun == NULL) {
    70                 ddf_msg(LVL_ERROR, "Failed creating function %s\n", name);
    71                 return ENOMEM;
     70                printf(NAME ": error creating function %s\n", name);
     71                rc = ENOMEM;
     72                goto leave;
    7273        }
    7374
    74         rc = ddf_fun_add_match_id(fun, match_id, match_score);
     75        rc = ddf_fun_add_match_id(fun, str_dup(match_id), match_score);
    7576        if (rc != EOK) {
    76                 ddf_msg(LVL_ERROR, "Failed adding match IDs to function %s\n",
    77                     name);
    78                 ddf_fun_destroy(fun);
    79                 return rc;
     77                printf(NAME ": error adding match IDs to function %s\n", name);
     78                goto leave;
    8079        }
    8180
    8281        rc = ddf_fun_bind(fun);
    8382        if (rc != EOK) {
    84                 ddf_msg(LVL_ERROR, "Failed binding function %s: %s\n", name,
     83                printf(NAME ": error binding function %s: %s\n", name,
    8584                    str_error(rc));
    86                 ddf_fun_destroy(fun);
    87                 return rc;
     85                goto leave;
    8886        }
    8987
    90         ddf_msg(LVL_NOTE, "Registered child device `%s'\n", name);
    91         return EOK;
     88        printf(NAME ": registered child device `%s'\n", name);
     89        rc = EOK;
     90
     91
     92leave:
     93        if (rc != expected_rc) {
     94                fprintf(stderr,
     95                    NAME ": Unexpected error registering function `%s'.\n" \
     96                    NAME ":     Expected \"%s\" but got \"%s\".\n",
     97                    name, str_error(expected_rc), str_error(rc));
     98        }
     99
     100        if ((rc != EOK) && (fun != NULL)) {
     101                ddf_fun_destroy(fun);
     102        }
     103
     104        return rc;
    92105}
    93106
     
    114127        int rc;
    115128
    116         ddf_msg(LVL_DEBUG, "add_device(name=\"%s\", handle=%d)\n",
     129        printf(NAME ": add_device(name=\"%s\", handle=%d)\n",
    117130            dev->name, (int) dev->handle);
    118131
    119132        fun_a = ddf_fun_create(dev, fun_exposed, "a");
    120133        if (fun_a == NULL) {
    121                 ddf_msg(LVL_ERROR, "Failed creating function 'a'.\n");
     134                printf(NAME ": error creating function 'a'.\n");
    122135                return ENOMEM;
    123136        }
     
    125138        rc = ddf_fun_bind(fun_a);
    126139        if (rc != EOK) {
    127                 ddf_msg(LVL_ERROR, "Failed binding function 'a'.\n");
     140                printf(NAME ": error binding function 'a'.\n");
    128141                return rc;
    129142        }
     
    135148                ddf_fun_add_to_class(fun_a, "virt-null");
    136149        } else if (str_cmp(dev->name, "test1") == 0) {
    137                 (void) register_fun_verbose(dev, "cloning myself ;-)", "clone",
    138                     "virtual&test1", 10);
     150                (void) register_fun_verbose(dev,
     151                    "cloning myself ;-)", "clone",
     152                    "virtual&test1", 10, EOK);
     153                (void) register_fun_verbose(dev,
     154                    "cloning myself twice ;-)", "clone",
     155                    "virtual&test1", 10, EEXISTS);
    139156        } else if (str_cmp(dev->name, "clone") == 0) {
    140                 (void) register_fun_verbose(dev, "run by the same task", "child",
    141                     "virtual&test1&child", 10);
     157                (void) register_fun_verbose(dev,
     158                    "run by the same task", "child",
     159                    "virtual&test1&child", 10, EOK);
    142160        }
    143161
    144         ddf_msg(LVL_DEBUG, "Device `%s' accepted.\n", dev->name);
     162        printf(NAME ": device `%s' accepted.\n", dev->name);
    145163
    146164        return EOK;
     
    150168{
    151169        printf(NAME ": HelenOS test1 virtual device driver\n");
    152         ddf_log_init(NAME, LVL_ERROR);
    153170        return ddf_driver_main(&test1_driver);
    154171}
Note: See TracChangeset for help on using the changeset viewer.