Changeset 63a3276 in mainline for uspace/srv/devman/driver.c


Ignore:
Timestamp:
2019-08-06T19:20:35Z (6 years ago)
Author:
Matthieu Riolo <matthieu.riolo@…>
Children:
3f05ef7
Parents:
72c8f77
git-author:
Michal Koutný <xm.koutny+hos@…> (2015-06-17 23:02:03)
git-committer:
Matthieu Riolo <matthieu.riolo@…> (2019-08-06 19:20:35)
Message:

sysman: Instrumented locsrv for autostart

  • also refactored unit name derivation in other brokers
  • exposee creation is not used in unit's lifecycle (failed assertion)

Conflicts:

uspace/lib/c/generic/loc.c
uspace/srv/devman/driver.c
uspace/srv/devman/drv_conn.c
uspace/srv/hid/compositor/compositor.c
uspace/srv/locsrv/locsrv.c
uspace/srv/vfs/vfs.h
uspace/srv/vfs/vfs_ops.c
uspace/srv/vfs/vfs_register.c

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/devman/driver.c

    r72c8f77 r63a3276  
    186186
    187187        return drv_cnt;
     188}
     189
     190/** Get name of unit that represents the driver
     191 *
     192 * @param[in]  drv
     193 * @param[out] unit_name_ptr  should be free'd after use, not touched on fail
     194 *
     195 * @return     EOK on success
     196 * @return     ENOMEM
     197 */
     198errno_t driver_unit_name(driver_t *drv, char **unit_name_ptr)
     199{
     200        char *unit_name = NULL;
     201        asprintf(&unit_name, "%s%c%s", drv->name, UNIT_NAME_SEPARATOR,
     202            UNIT_SVC_TYPE_NAME);
     203
     204        if (unit_name == NULL) {
     205                return ENOMEM;
     206        } else {
     207                *unit_name_ptr = unit_name;
     208                return EOK;
     209        }
    188210}
    189211
     
    320342
    321343        char *unit_name = NULL;
    322         asprintf(&unit_name, "%s%c%s", drv->name, UNIT_NAME_SEPARATOR,
    323             UNIT_SVC_TYPE_NAME);
    324         if (unit_name == NULL) {
     344        if (driver_unit_name(drv, &unit_name) != EOK) {
    325345                return false;
    326346        }
     
    333353        int flags = 0;
    334354        rc = sysman_unit_start(unit_name, flags);
     355        free(unit_name);
    335356
    336357        if (rc != EOK) {
     
    338359                    "Request to start driver `%s' failed: %s.",
    339360                    drv->name, str_error(rc));
    340                 free(unit_name);
    341361                return false;
    342362        }
    343363
    344364        drv->state = DRIVER_STARTING;
    345         free(unit_name);
    346365        return true;
    347366}
Note: See TracChangeset for help on using the changeset viewer.