Changes in kernel/generic/src/udebug/udebug_ops.c [a53ed3a:44a7ee5] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/udebug/udebug_ops.c
ra53ed3a r44a7ee5 46 46 #include <errno.h> 47 47 #include <print.h> 48 #include <stdbool.h>49 48 #include <str.h> 50 49 #include <syscall/copy.h> … … 79 78 * 80 79 */ 81 static errno_t _thread_op_begin(thread_t *thread, bool being_go)80 static int _thread_op_begin(thread_t *thread, bool being_go) 82 81 { 83 82 mutex_lock(&TASK->udebug.lock); … … 158 157 * 159 158 * Initiates a debugging session for the current task (and its threads). 160 * When the debugging session has started a reply shouldbe sent to the159 * When the debugging session has started a reply will be sent to the 161 160 * UDEBUG_BEGIN call. This may happen immediately in this function if 162 161 * all the threads in this task are stoppable at the moment and in this 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). 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). 168 166 * 169 167 * @param call The BEGIN call we are servicing. 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 errno_t udebug_begin(call_t *call, bool *active) 168 * 169 * @return 0 (OK, but not done yet), 1 (done) or negative error code. 170 * 171 */ 172 int udebug_begin(call_t *call) 177 173 { 178 174 LOG("Debugging task %" PRIu64, TASK->taskid); … … 189 185 TASK->udebug.debugger = call->sender; 190 186 187 int reply; 188 191 189 if (TASK->udebug.not_stoppable_count == 0) { 192 190 TASK->udebug.dt_state = UDEBUG_TS_ACTIVE; 193 191 TASK->udebug.begin_call = NULL; 194 *active = true; /* directly to active state*/192 reply = 1; /* immediate reply */ 195 193 } else 196 *active = false; /* only in beginning state*/194 reply = 0; /* no reply */ 197 195 198 196 /* Set udebug.active on all of the task's userspace threads. */ … … 209 207 210 208 mutex_unlock(&TASK->udebug.lock); 211 return EOK;209 return reply; 212 210 } 213 211 … … 216 214 * Closes the debugging session for the current task. 217 215 * 218 * @return Zero on success or anerror code.219 * 220 */ 221 errno_t udebug_end(void)216 * @return Zero on success or negative error code. 217 * 218 */ 219 int udebug_end(void) 222 220 { 223 221 LOG("Task %" PRIu64, TASK->taskid); 224 222 225 223 mutex_lock(&TASK->udebug.lock); 226 errno_t rc = udebug_task_cleanup(TASK);224 int rc = udebug_task_cleanup(TASK); 227 225 mutex_unlock(&TASK->udebug.lock); 228 226 … … 236 234 * @param mask Or combination of events that should be enabled. 237 235 * 238 * @return Zero on success or anerror code.239 * 240 */ 241 errno_t udebug_set_evmask(udebug_evmask_t mask)236 * @return Zero on success or negative error code. 237 * 238 */ 239 int udebug_set_evmask(udebug_evmask_t mask) 242 240 { 243 241 LOG("mask = 0x%x", mask); … … 253 251 mutex_unlock(&TASK->udebug.lock); 254 252 255 return EOK;253 return 0; 256 254 } 257 255 … … 266 264 * 267 265 */ 268 errno_t udebug_go(thread_t *thread, call_t *call)266 int udebug_go(thread_t *thread, call_t *call) 269 267 { 270 268 /* On success, this will lock thread->udebug.lock. */ 271 errno_t rc = _thread_op_begin(thread, false);269 int rc = _thread_op_begin(thread, false); 272 270 if (rc != EOK) 273 271 return rc; … … 285 283 _thread_op_end(thread); 286 284 287 return EOK;285 return 0; 288 286 } 289 287 … … 297 295 * 298 296 */ 299 errno_t udebug_stop(thread_t *thread, call_t *call)297 int udebug_stop(thread_t *thread, call_t *call) 300 298 { 301 299 LOG("udebug_stop()"); … … 306 304 * 307 305 */ 308 errno_t rc = _thread_op_begin(thread, true);306 int rc = _thread_op_begin(thread, true); 309 307 if (rc != EOK) 310 308 return rc; … … 316 314 /* Answer will be sent when the thread becomes stoppable. */ 317 315 _thread_op_end(thread); 318 return EOK;316 return 0; 319 317 } 320 318 … … 339 337 mutex_unlock(&TASK->udebug.lock); 340 338 341 return EOK;339 return 0; 342 340 } 343 341 … … 364 362 * 365 363 */ 366 errno_t udebug_thread_read(void **buffer, size_t buf_size, size_t *stored,364 int udebug_thread_read(void **buffer, size_t buf_size, size_t *stored, 367 365 size_t *needed) 368 366 { … … 414 412 *needed = (copied_ids + extra_ids) * sizeof(sysarg_t); 415 413 416 return EOK;414 return 0; 417 415 } 418 416 … … 428 426 * 429 427 */ 430 errno_t udebug_name_read(char **data, size_t *data_size)428 int udebug_name_read(char **data, size_t *data_size) 431 429 { 432 430 size_t name_size = str_size(TASK->name) + 1; … … 437 435 memcpy(*data, TASK->name, name_size); 438 436 439 return EOK;437 return 0; 440 438 } 441 439 … … 457 455 * 458 456 */ 459 errno_t udebug_args_read(thread_t *thread, void **buffer)457 int udebug_args_read(thread_t *thread, void **buffer) 460 458 { 461 459 /* On success, this will lock t->udebug.lock. */ 462 errno_t rc = _thread_op_begin(thread, false);460 int rc = _thread_op_begin(thread, false); 463 461 if (rc != EOK) 464 462 return rc; … … 480 478 481 479 *buffer = arg_buffer; 482 return EOK;480 return 0; 483 481 } 484 482 … … 500 498 * 501 499 */ 502 errno_t udebug_regs_read(thread_t *thread, void **buffer)500 int udebug_regs_read(thread_t *thread, void **buffer) 503 501 { 504 502 /* On success, this will lock t->udebug.lock */ 505 errno_t rc = _thread_op_begin(thread, false);503 int rc = _thread_op_begin(thread, false); 506 504 if (rc != EOK) 507 505 return rc; … … 522 520 523 521 *buffer = (void *) state_buf; 524 return EOK;522 return 0; 525 523 } 526 524 … … 536 534 * 537 535 */ 538 errno_t udebug_mem_read(sysarg_t uspace_addr, size_t n, void **buffer)536 int udebug_mem_read(sysarg_t uspace_addr, size_t n, void **buffer) 539 537 { 540 538 /* Verify task state */ … … 553 551 * 554 552 */ 555 errno_t rc = copy_from_uspace(data_buffer, (void *) uspace_addr, n);556 mutex_unlock(&TASK->udebug.lock); 557 558 if (rc != EOK)553 int rc = copy_from_uspace(data_buffer, (void *) uspace_addr, n); 554 mutex_unlock(&TASK->udebug.lock); 555 556 if (rc != 0) 559 557 return rc; 560 558 561 559 *buffer = data_buffer; 562 return EOK;560 return 0; 563 561 } 564 562
Note:
See TracChangeset
for help on using the changeset viewer.