Changeset b2a1fd92 in mainline
- Timestamp:
- 2017-12-11T09:42:42Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 16f2dcc
- Parents:
- 9b07fba
- git-author:
- Jiri Svoboda <jiri@…> (2017-12-10 22:41:37)
- git-committer:
- Jiri Svoboda <jiri@…> (2017-12-11 09:42:42)
- Location:
- kernel/generic
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/udebug/udebug_ops.h
r9b07fba rb2a1fd92 37 37 38 38 #include <ipc/ipc.h> 39 #include <proc/thread.h> 40 #include <stdbool.h> 41 #include <stddef.h> 39 42 40 int udebug_begin(call_t *call );43 int udebug_begin(call_t *call, bool *active); 41 44 int udebug_end(void); 42 45 int udebug_set_evmask(udebug_evmask_t mask); -
kernel/generic/src/udebug/udebug_ipc.c
r9b07fba rb2a1fd92 72 72 { 73 73 int rc; 74 75 rc = udebug_begin(call); 76 if (rc < 0) { 74 bool active; 75 76 rc = udebug_begin(call, &active); 77 if (rc != EOK) { 77 78 IPC_SET_RETVAL(call->data, rc); 78 79 ipc_answer(&TASK->kb.box, call); … … 84 85 * send a reply. 85 86 */ 86 if ( rc != 0) {87 IPC_SET_RETVAL(call->data, 0);87 if (active) { 88 IPC_SET_RETVAL(call->data, EOK); 88 89 ipc_answer(&TASK->kb.box, call); 89 90 } -
kernel/generic/src/udebug/udebug_ops.c
r9b07fba rb2a1fd92 46 46 #include <errno.h> 47 47 #include <print.h> 48 #include <stdbool.h> 48 49 #include <str.h> 49 50 #include <syscall/copy.h> … … 157 158 * 158 159 * Initiates a debugging session for the current task (and its threads). 159 * When the debugging session has started a reply willbe sent to the160 * When the debugging session has started a reply should be sent to the 160 161 * UDEBUG_BEGIN call. This may happen immediately in this function if 161 162 * 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). 166 168 * 167 169 * @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 */ 176 int udebug_begin(call_t *call, bool *active) 173 177 { 174 178 LOG("Debugging task %" PRIu64, TASK->taskid); … … 185 189 TASK->udebug.debugger = call->sender; 186 190 187 int reply;188 189 191 if (TASK->udebug.not_stoppable_count == 0) { 190 192 TASK->udebug.dt_state = UDEBUG_TS_ACTIVE; 191 193 TASK->udebug.begin_call = NULL; 192 reply = 1; /* immediate reply*/194 *active = true; /* directly to active state */ 193 195 } else 194 reply = 0; /* no reply*/196 *active = false; /* only in beginning state */ 195 197 196 198 /* Set udebug.active on all of the task's userspace threads. */ … … 207 209 208 210 mutex_unlock(&TASK->udebug.lock); 209 return reply;211 return EOK; 210 212 } 211 213
Note:
See TracChangeset
for help on using the changeset viewer.