Changeset 1b20da0 in mainline for kernel/test/synch/rcu1.c
- Timestamp:
- 2018-02-28T17:52:03Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3061bc1
- Parents:
- df6ded8
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:26:03)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:52:03)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/test/synch/rcu1.c
rdf6ded8 r1b20da0 82 82 assert(thread[k] == NULL); 83 83 84 thread[k] = thread_create(func, arg, TASK, THREAD_FLAG_NONE, 84 thread[k] = thread_create(func, arg, TASK, THREAD_FLAG_NONE, 85 85 "test-rcu-thread"); 86 86 … … 223 223 get_seq(10, 1000 * 1000, get_thread_cnt(), seq); 224 224 225 TPRINTF("\nRun %zu thr: repeat long reader sections, will preempt, no cbs.\n", 225 TPRINTF("\nRun %zu thr: repeat long reader sections, will preempt, no cbs.\n", 226 226 get_thread_cnt()); 227 227 … … 273 273 size_t max_used_mem = sizeof(rcu_item_t) * exp_cnt; 274 274 275 TPRINTF("\nRun %zu thr: post %zu no-op callbacks (%zu B used), no readers.\n", 275 TPRINTF("\nRun %zu thr: post %zu no-op callbacks (%zu B used), no readers.\n", 276 276 get_thread_cnt(), exp_cnt, max_used_mem); 277 277 … … 414 414 rcu_read_unlock(); 415 415 416 if (seq_test_result != EOK) 416 if (seq_test_result != EOK) 417 417 return; 418 418 } … … 476 476 477 477 TPRINTF("\nRun %zu th: check callback completion time in readers. " 478 "%zu callbacks total (max %" PRIu64 " %s used). Be patient.\n", 478 "%zu callbacks total (max %" PRIu64 " %s used). Be patient.\n", 479 479 get_thread_cnt(), total_cbs, mem_units, mem_suffix); 480 480 … … 490 490 } else if (seq_test_result == ERACE) { 491 491 TPRINTF("\nERROR: race detected!!\n"); 492 } 492 } 493 493 494 494 return seq_test_result == EOK; … … 531 531 p->exited = false; 532 532 533 run_one(reader_exit, p); 533 run_one(reader_exit, p); 534 534 join_one(); 535 535 … … 575 575 rcu_read_unlock(); 576 576 577 /* 578 * Start GP after exiting reader section w/ preemption. 577 /* 578 * Start GP after exiting reader section w/ preemption. 579 579 * Just check that the callback does not lock up and is not lost. 580 580 */ … … 590 590 591 591 TPRINTF("reader_inside_cur{ "); 592 /* 593 * Start a GP and try to finish the reader before 594 * the GP ends (including preemption). 592 /* 593 * Start a GP and try to finish the reader before 594 * the GP ends (including preemption). 595 595 */ 596 596 rcu_call(&p->e.rcu, preempted_unlocked); … … 667 667 rcu_call(&p->e.rcu, preempted_unlocked); 668 668 669 /* 670 * Preempt twice while GP is running after we've been known 669 /* 670 * Preempt twice while GP is running after we've been known 671 671 * to hold up the GP just to make sure multiple preemptions 672 672 * are properly tracked if a reader is delaying the cur GP. … … 695 695 p->result = EOK; 696 696 697 run_one(f, p); 697 run_one(f, p); 698 698 join_one(); 699 699 … … 718 718 bool ok = true; 719 719 720 ok = do_one_reader_preempt(preempted_reader_prev, 720 ok = do_one_reader_preempt(preempted_reader_prev, 721 721 "Err: preempted_reader_prev()\n"); 722 722 success = success && ok; 723 723 724 ok = do_one_reader_preempt(preempted_reader_inside_cur, 724 ok = do_one_reader_preempt(preempted_reader_inside_cur, 725 725 "Err: preempted_reader_inside_cur()\n"); 726 726 success = success && ok; 727 727 728 ok = do_one_reader_preempt(preempted_reader_cur, 728 ok = do_one_reader_preempt(preempted_reader_cur, 729 729 "Err: preempted_reader_cur()\n"); 730 730 success = success && ok; 731 731 732 ok = do_one_reader_preempt(preempted_reader_next1, 732 ok = do_one_reader_preempt(preempted_reader_next1, 733 733 "Err: preempted_reader_next1()\n"); 734 734 success = success && ok; 735 735 736 ok = do_one_reader_preempt(preempted_reader_next2, 736 ok = do_one_reader_preempt(preempted_reader_next2, 737 737 "Err: preempted_reader_next2()\n"); 738 738 success = success && ok; … … 788 788 synch->synch_running = false; 789 789 790 run_one(synch_reader, synch); 790 run_one(synch_reader, synch); 791 791 792 792 /* Wait for the reader to enter its critical section. */ … … 866 866 rcu_read_unlock(); 867 867 868 /* 868 /* 869 869 * Do some work outside of the reader section so we are not always 870 870 * preempted in the reader section. … … 905 905 size_t cb_per_thread = 1000 * 1000; 906 906 bool done = false; 907 stress_t master = { .iters = cb_per_thread, .master = true }; 908 stress_t worker = { .iters = cb_per_thread, .master = false }; 907 stress_t master = { .iters = cb_per_thread, .master = true }; 908 stress_t worker = { .iters = cb_per_thread, .master = false }; 909 909 910 910 size_t thread_cnt = min(MAX_THREADS / 2, config.cpu_active); … … 921 921 922 922 TPRINTF("\nStress: Run %zu nop-readers and %zu updaters. %zu callbacks" 923 " total (max %" PRIu64 " %s used). Be very patient.\n", 923 " total (max %" PRIu64 " %s used). Be very patient.\n", 924 924 reader_cnt, updater_cnt, exp_upd_calls, mem_units, mem_suffix); 925 925 … … 1044 1044 completed_gps += delta_gps; 1045 1045 1046 if (ok) { 1047 TPRINTF("\nSubtest %s() ok (GPs: %" PRIu64 ").\n", 1046 if (ok) { 1047 TPRINTF("\nSubtest %s() ok (GPs: %" PRIu64 ").\n", 1048 1048 test_func[i].desc, delta_gps); 1049 1049 } else { 1050 1050 TPRINTF("\nFailed: %s(). Pausing for 5 secs.\n", test_func[i].desc); 1051 1051 thread_sleep(5); 1052 } 1052 } 1053 1053 } 1054 1054
Note:
See TracChangeset
for help on using the changeset viewer.