Changeset 06599a1 in mainline for uspace/lib/sysman/src/ctl.c


Ignore:
Timestamp:
2020-03-06T19:13:55Z (4 years ago)
Author:
Matthieu Riolo <matthieu.riolo@…>
Children:
3529f148
Parents:
22d990c
git-author:
Matthieu Riolo <matthieu.riolo@…> (2020-02-05 21:48:41)
git-committer:
Matthieu Riolo <matthieu.riolo@…> (2020-03-06 19:13:55)
Message:

Correcting sysctl list-units

One failure was a cast in lib/sysman/src/ctl.c which wrongly used
an enum like a pointer of the type sysarg_t. This resulted into a
memory allocation failure.

The second bug was in the loop of sysctl. For iterating over all
found units the difference was created of two pointers and then
compared to an unsigned int which was down casted to an int.
Unnecessary complicated and a source for casting problems.
It has been replaced with a simple for-loop and an array access

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/sysman/src/ctl.c

    r22d990c r06599a1  
    186186errno_t sysman_unit_get_state(unit_handle_t handle, unit_state_t *state)
    187187{
    188         async_exch_t *exch = sysman_exchange_begin(SYSMAN_PORT_CTL);
    189         errno_t rc = async_req_1_1(exch, SYSMAN_CTL_UNIT_GET_STATE, handle, (sysarg_t *)state);
    190         sysman_exchange_end(exch);
     188        sysarg_t ret;
     189        async_exch_t *exch = sysman_exchange_begin(SYSMAN_PORT_CTL);
     190        errno_t rc = async_req_1_1(exch, SYSMAN_CTL_UNIT_GET_STATE, handle, &ret);
     191        sysman_exchange_end(exch);
     192        *state = (unit_state_t)ret;
    191193
    192194        return rc;
Note: See TracChangeset for help on using the changeset viewer.