Changeset aae365bc in mainline
- Timestamp:
- 2018-11-07T21:11:52Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d19b3fc
- Parents:
- 947ab77e
- Files:
-
- 16 deleted
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
HelenOS.config
r947ab77e raae365bc 430 430 ! [COMPILER=gcc_cross] CONFIG_LTO (n/y) 431 431 432 % Kernel RCU algorithm433 @ "PREEMPT_PODZIMEK" Preemptible Podzimek-RCU434 @ "PREEMPT_A" Preemptible A-RCU435 ! RCU (choice)436 437 432 % Compress init data 438 433 ! CONFIG_COMPRESSED_INIT (y/n) -
defaults/amd64/Makefile.config
r947ab77e raae365bc 44 44 CONFIG_TEST = y 45 45 46 # Kernel RCU implementation47 RCU = PREEMPT_A48 49 46 # Input device class 50 47 CONFIG_HID_IN = generic -
defaults/arm32/Makefile.config
r947ab77e raae365bc 32 32 CONFIG_TEST = y 33 33 34 # Kernel RCU implementation35 RCU = PREEMPT_A36 37 34 # What is your input device? 38 35 CONFIG_HID_IN = generic -
defaults/ia32/Makefile.config
r947ab77e raae365bc 47 47 CONFIG_TEST = y 48 48 49 # Kernel RCU implementation50 RCU = PREEMPT_A51 52 49 # Input device class 53 50 CONFIG_HID_IN = generic -
defaults/ia64/Makefile.config
r947ab77e raae365bc 44 44 CONFIG_TEST = y 45 45 46 # Kernel RCU implementation47 RCU = PREEMPT_A48 49 46 # Input device class 50 47 CONFIG_HID_IN = generic -
defaults/mips32/Makefile.config
r947ab77e raae365bc 38 38 CONFIG_TEST = y 39 39 40 # Kernel RCU implementation41 RCU = PREEMPT_A42 43 40 # Input device class 44 41 CONFIG_HID_IN = generic -
defaults/ppc32/Makefile.config
r947ab77e raae365bc 35 35 CONFIG_TEST = y 36 36 37 # Kernel RCU implementation38 RCU = PREEMPT_A39 40 37 # Input device class 41 38 CONFIG_HID_IN = generic -
defaults/riscv64/Makefile.config
r947ab77e raae365bc 32 32 CONFIG_TEST = y 33 33 34 # Kernel RCU implementation35 RCU = PREEMPT_A36 37 34 # What is your input device? 38 35 CONFIG_HID_IN = generic -
defaults/sparc64/Makefile.config
r947ab77e raae365bc 47 47 CONFIG_TEST = y 48 48 49 # Kernel RCU implementation50 RCU = PREEMPT_A51 52 49 # Input device class 53 50 CONFIG_HID_IN = generic -
defaults/special/Makefile.config
r947ab77e raae365bc 32 32 CONFIG_TEST = y 33 33 34 # Kernel RCU implementation35 RCU = PREEMPT_A36 37 34 # Optimization level 38 35 OPTIMIZATION = 3 -
kernel/Makefile
r947ab77e raae365bc 163 163 generic/src/adt/bitmap.c \ 164 164 generic/src/adt/btree.c \ 165 generic/src/adt/cht.c \166 165 generic/src/adt/hash_table.c \ 167 166 generic/src/adt/list.c \ … … 229 228 generic/src/synch/waitq.c \ 230 229 generic/src/synch/futex.c \ 231 generic/src/synch/workqueue.c \232 generic/src/synch/rcu.c \233 230 generic/src/smp/ipi.c \ 234 231 generic/src/smp/smp.c \ … … 283 280 test/atomic/atomic1.c \ 284 281 test/btree/btree1.c \ 285 test/cht/cht1.c \286 282 test/fault/fault1.c \ 287 283 test/mm/falloc1.c \ … … 292 288 test/synch/semaphore1.c \ 293 289 test/synch/semaphore2.c \ 294 test/synch/workqueue2.c \295 test/synch/workqueue3.c \296 test/synch/rcu1.c \297 290 test/print/print1.c \ 298 291 test/print/print2.c \ -
kernel/generic/include/arch.h
r947ab77e raae365bc 66 66 typedef struct { 67 67 size_t preemption; /**< Preemption disabled counter and flag. */ 68 #ifdef RCU_PREEMPT_A69 size_t rcu_nesting; /**< RCU nesting count and flag. */70 #endif71 68 struct thread *thread; /**< Current thread. */ 72 69 struct task *task; /**< Current task. */ -
kernel/generic/include/cpu.h
r947ab77e raae365bc 38 38 #include <mm/tlb.h> 39 39 #include <synch/spinlock.h> 40 #include <synch/rcu_types.h>41 40 #include <proc/scheduler.h> 42 41 #include <arch/cpu.h> … … 104 103 list_t smp_pending_calls; 105 104 106 /** RCU per-cpu data. Uses own locking. */107 rcu_cpu_data_t rcu;108 109 105 /** 110 106 * Stack used by scheduler when there is no running thread. -
kernel/generic/include/proc/task.h
r947ab77e raae365bc 43 43 #include <synch/mutex.h> 44 44 #include <synch/futex.h> 45 #include <synch/workqueue.h>46 #include <adt/cht.h>47 45 #include <adt/list.h> 48 46 #include <adt/odict.h> -
kernel/generic/include/proc/thread.h
r947ab77e raae365bc 41 41 #include <cpu.h> 42 42 #include <synch/spinlock.h> 43 #include <synch/rcu_types.h>44 43 #include <adt/odict.h> 45 44 #include <mm/slab.h> … … 194 193 thread_id_t tid; 195 194 196 /** Work queue this thread belongs to or NULL. Immutable. */197 struct work_queue *workq;198 /** Links work queue threads. Protected by workq->lock. */199 link_t workq_link;200 /** True if the worker was blocked and is not running. Use thread->lock. */201 bool workq_blocked;202 /** True if the worker will block in order to become idle. Use workq->lock. */203 bool workq_idling;204 205 /** RCU thread related data. Protected by its own locks. */206 rcu_thread_data_t rcu;207 208 195 /** Architecture-specific data. */ 209 196 thread_arch_t arch; -
kernel/generic/src/console/cmd.c
r947ab77e raae365bc 70 70 #include <sysinfo/sysinfo.h> 71 71 #include <symtab.h> 72 #include <synch/workqueue.h>73 #include <synch/rcu.h>74 72 #include <errno.h> 75 73 … … 536 534 }; 537 535 538 /* Data and methods for the 'workq' command */539 static int cmd_workq(cmd_arg_t *argv);540 static cmd_info_t workq_info = {541 .name = "workq",542 .description = "Show global workq information.",543 .func = cmd_workq,544 .argc = 0545 };546 547 /* Data and methods for the 'workq' command */548 static int cmd_rcu(cmd_arg_t *argv);549 static cmd_info_t rcu_info = {550 .name = "rcu",551 .description = "Show RCU run-time statistics.",552 .func = cmd_rcu,553 .argc = 0554 };555 556 536 /* Data and methods for 'ipc' command */ 557 537 static int cmd_ipc(cmd_arg_t *argv); … … 618 598 &physmem_info, 619 599 &reboot_info, 620 &rcu_info,621 600 &sched_info, 622 601 &set4_info, … … 628 607 &uptime_info, 629 608 &version_info, 630 &workq_info,631 609 &zones_info, 632 610 &zone_info, … … 1302 1280 } 1303 1281 1304 /** Prints information about the global work queue.1305 *1306 * @param argv Ignores1307 *1308 * @return Always 11309 */1310 int cmd_workq(cmd_arg_t *argv)1311 {1312 workq_global_print_info();1313 return 1;1314 }1315 1316 /** Prints RCU statistics.1317 *1318 * @param argv Ignores1319 *1320 * @return Always 11321 */1322 int cmd_rcu(cmd_arg_t *argv)1323 {1324 rcu_print_stat();1325 return 1;1326 }1327 1328 1282 /** Command for listing memory zones 1329 1283 * -
kernel/generic/src/cpu/cpu.c
r947ab77e raae365bc 50 50 #include <sysinfo/sysinfo.h> 51 51 #include <arch/cycle.h> 52 #include <synch/rcu.h>53 52 54 53 cpu_t *cpus; … … 108 107 cpu_identify(); 109 108 cpu_arch_init(); 110 rcu_cpu_init();111 109 } 112 110 -
kernel/generic/src/main/kinit.c
r947ab77e raae365bc 79 79 #include <synch/waitq.h> 80 80 #include <synch/spinlock.h> 81 #include <synch/workqueue.h>82 #include <synch/rcu.h>83 81 84 82 #define ALIVE_CHARS 4 … … 109 107 110 108 interrupts_disable(); 111 112 /* Start processing RCU callbacks. RCU is fully functional afterwards. */113 rcu_kinit_init();114 115 /*116 * Start processing work queue items. Some may have been queued during boot.117 */118 workq_global_worker_init();119 109 120 110 #ifdef CONFIG_SMP -
kernel/generic/src/main/main.c
r947ab77e raae365bc 78 78 #include <synch/waitq.h> 79 79 #include <synch/futex.h> 80 #include <synch/workqueue.h>81 80 #include <smp/smp_call.h> 82 81 #include <arch/arch.h> … … 275 274 276 275 smp_call_init(); 277 workq_global_init();278 276 clock_counter_init(); 279 277 timeout_init(); -
kernel/generic/src/proc/scheduler.c
r947ab77e raae365bc 54 54 #include <atomic.h> 55 55 #include <synch/spinlock.h> 56 #include <synch/workqueue.h>57 #include <synch/rcu.h>58 56 #include <config.h> 59 57 #include <context.h> … … 90 88 { 91 89 before_thread_runs_arch(); 92 rcu_before_thread_runs();93 90 94 91 #ifdef CONFIG_FPU_LAZY … … 131 128 static void after_thread_ran(void) 132 129 { 133 workq_after_thread_ran();134 rcu_after_thread_ran();135 130 after_thread_ran_arch(); 136 131 } … … 430 425 431 426 case Exiting: 432 rcu_thread_exiting();433 427 repeat: 434 428 if (THREAD->detached) { -
kernel/generic/src/proc/the.c
r947ab77e raae365bc 60 60 the->as = NULL; 61 61 the->magic = MAGIC; 62 #ifdef RCU_PREEMPT_A63 the->rcu_nesting = 0;64 #endif65 62 } 66 63 -
kernel/generic/src/proc/thread.c
r947ab77e raae365bc 48 48 #include <synch/spinlock.h> 49 49 #include <synch/waitq.h> 50 #include <synch/workqueue.h>51 #include <synch/rcu.h>52 50 #include <cpu.h> 53 51 #include <str.h> … … 69 67 #include <syscall/copy.h> 70 68 #include <errno.h> 69 #include <debug.h> 71 70 72 71 /** Thread states */ … … 272 271 { 273 272 assert(irq_spinlock_locked(&thread->lock)); 274 workq_before_thread_is_ready(thread);275 273 } 276 274 … … 399 397 thread->task = task; 400 398 401 thread->workq = NULL;402 403 399 thread->fpu_context_exists = false; 404 400 thread->fpu_context_engaged = false; … … 414 410 /* Might depend on previous initialization */ 415 411 thread_create_arch(thread); 416 417 rcu_thread_init(thread);418 412 419 413 if ((flags & THREAD_FLAG_NOATTACH) != THREAD_FLAG_NOATTACH) -
kernel/test/test.c
r947ab77e raae365bc 42 42 #include <atomic/atomic1.def> 43 43 #include <btree/btree1.def> 44 #include <cht/cht1.def>45 44 #include <debug/mips1.def> 46 45 #include <fault/fault1.def> … … 52 51 #include <synch/semaphore1.def> 53 52 #include <synch/semaphore2.def> 54 #include <synch/rcu1.def>55 #include <synch/workqueue2.def>56 #include <synch/workqueue3.def>57 53 #include <print/print1.def> 58 54 #include <print/print2.def> -
kernel/test/test.h
r947ab77e raae365bc 60 60 extern const char *test_avltree1(void); 61 61 extern const char *test_btree1(void); 62 extern const char *test_cht1(void);63 62 extern const char *test_mips1(void); 64 63 extern const char *test_fault1(void); … … 78 77 extern const char *test_thread1(void); 79 78 extern const char *test_smpcall1(void); 80 extern const char *test_workqueue_all(void);81 extern const char *test_workqueue3(void);82 extern const char *test_workqueue3quit(void);83 extern const char *test_rcu1(void);84 79 85 80 extern test_t tests[];
Note:
See TracChangeset
for help on using the changeset viewer.