Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/udebug/udebug_ops.c

    r44a7ee5 rb2a1fd92  
    4646#include <errno.h>
    4747#include <print.h>
     48#include <stdbool.h>
    4849#include <str.h>
    4950#include <syscall/copy.h>
     
    157158 *
    158159 * Initiates a debugging session for the current task (and its threads).
    159  * When the debugging session has started a reply will be sent to the
     160 * When the debugging session has started a reply should be sent to the
    160161 * UDEBUG_BEGIN call. This may happen immediately in this function if
    161162 * all the threads in this task are stoppable at the moment and in this
    162  * case the function returns 1.
    163  *
    164  * Otherwise the function returns 0 and the reply will be sent as soon as
    165  * all the threads become stoppable (i.e. they can be considered stopped).
     163 * case the function sets @a *active to @c true.
     164 *
     165 * Otherwise the function sets @a *active to false and the resonse should
     166 * be sent as soon as all the threads become stoppable (i.e. they can be
     167 * considered stopped).
    166168 *
    167169 * @param call The BEGIN call we are servicing.
    168  *
    169  * @return 0 (OK, but not done yet), 1 (done) or negative error code.
    170  *
    171  */
    172 int udebug_begin(call_t *call)
     170 * @param active Place to store @c true iff we went directly to active state,
     171 *               @c false if we only went to beginning state
     172 *
     173 * @return EOK on success, EBUSY if the task is already has an active
     174 *         debugging session.
     175 */
     176int udebug_begin(call_t *call, bool *active)
    173177{
    174178        LOG("Debugging task %" PRIu64, TASK->taskid);
     
    185189        TASK->udebug.debugger = call->sender;
    186190       
    187         int reply;
    188        
    189191        if (TASK->udebug.not_stoppable_count == 0) {
    190192                TASK->udebug.dt_state = UDEBUG_TS_ACTIVE;
    191193                TASK->udebug.begin_call = NULL;
    192                 reply = 1;  /* immediate reply */
     194                *active = true;  /* directly to active state */
    193195        } else
    194                 reply = 0;  /* no reply */
     196                *active = false;  /* only in beginning state */
    195197       
    196198        /* Set udebug.active on all of the task's userspace threads. */
     
    207209       
    208210        mutex_unlock(&TASK->udebug.lock);
    209         return reply;
     211        return EOK;
    210212}
    211213
Note: See TracChangeset for help on using the changeset viewer.