Changeset 90dd8aee in mainline for kernel/generic/src/console/console.c
- Timestamp:
- 2025-04-10T17:55:36Z (4 days ago)
- Branches:
- master
- Children:
- 8165a7a, c0d814a
- Parents:
- c55ab66
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2025-04-10 11:33:46)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2025-04-10 17:55:36)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/console/console.c
rc55ab66 r90dd8aee 34 34 */ 35 35 36 #include <abi/kio.h> 37 #include <arch.h> 36 38 #include <assert.h> 39 #include <atomic.h> 40 #include <console/chardev.h> 37 41 #include <console/console.h> 38 #include <console/chardev.h> 39 #include <sysinfo/sysinfo.h> 40 #include <synch/waitq.h> 41 #include <synch/spinlock.h> 42 #include <typedefs.h> 42 #include <ddi/ddi.h> 43 43 #include <ddi/irq.h> 44 #include < ddi/ddi.h>44 #include <errno.h> 45 45 #include <ipc/event.h> 46 46 #include <ipc/irq.h> 47 #include < arch.h>47 #include <mm/frame.h> /* SIZE2FRAMES */ 48 48 #include <panic.h> 49 #include <preemption.h> 50 #include <proc/thread.h> 51 #include <putchar.h> 52 #include <stdatomic.h> 49 53 #include <stdio.h> 50 #include <putchar.h> 51 #include <atomic.h> 54 #include <stdlib.h> /* malloc */ 55 #include <str.h> 56 #include <synch/mutex.h> 57 #include <synch/spinlock.h> 58 #include <synch/waitq.h> 52 59 #include <syscall/copy.h> 53 #include <errno.h> 54 #include <str.h> 55 #include <stdatomic.h> 56 #include <abi/kio.h> 57 #include <mm/frame.h> /* SIZE2FRAMES */ 58 #include <stdlib.h> /* malloc */ 60 #include <sysinfo/sysinfo.h> 61 #include <typedefs.h> 59 62 60 63 #define KIO_PAGES 8 … … 66 69 /** Kernel log initialized */ 67 70 static atomic_bool kio_inited = ATOMIC_VAR_INIT(false); 71 72 /** A mutex for preventing interleaving of output lines from different threads. 73 * May not be held in some circumstances, so locking of any internal shared 74 * structures is still necessary. 75 */ 76 static MUTEX_INITIALIZE(console_mutex, MUTEX_RECURSIVE); 68 77 69 78 /** First kernel log characters */ … … 395 404 } 396 405 406 /** Lock console output, ensuring that lines from different threads don't 407 * interleave. Does nothing when preemption is disabled, so that debugging 408 * and error printouts in sensitive areas still work. 409 */ 410 void console_lock(void) 411 { 412 if (!PREEMPTION_DISABLED) 413 mutex_lock(&console_mutex); 414 } 415 416 /** Unlocks console output. See console_lock() 417 */ 418 void console_unlock(void) 419 { 420 if (!PREEMPTION_DISABLED) 421 mutex_unlock(&console_mutex); 422 } 423 397 424 /** @} 398 425 */
Note:
See TracChangeset
for help on using the changeset viewer.