Function report |
Source Code:kernel\locking\locktorture.c |
Create Date:2022-07-28 09:54:43 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:lock_torture_init
Proto:static int __init lock_torture_init(void)
Type:int
Parameter:Nothing
| 842 | firsterr = 0 |
| 843 | static struct lock_torture_ops * torture_ops[] = { & lock_busted_ops, & spin_lock_ops, & spin_lock_irq_ops, & rw_lock_ops, & rw_lock_irq_ops, & mutex_lock_ops, & ww_mutex_lock_ops, & rwsem_lock_ops, & percpu_rwsem_lock_ops, } |
| 856 | If Not Initialize torture module Then Return -EBUSY |
| 861 | cur_ops = torture_ops[i] |
| 862 | If strcmp(torture_type, name) == 0 Then Break |
| 866 | pr_alert("lock-torture: invalid torture type: \"%s\"\n", torture_type) |
| 868 | pr_alert("lock-torture types:") |
| 869 | When i < ARRAY_SIZE - get the number of elements in array @arr*@arr: array to be sized(torture_ops) cycle pr_alert(" %s", name) |
| 871 | pr_alert("\n") |
| 873 | Go to unwind |
| 876 | If nwriters_stress == 0 && nreaders_stress == 0 Then |
| 885 | If nwriters_stress >= 0 Then nrealwriters_stress = nwriters_stress |
| 887 | Else nrealwriters_stress = 2 * num_online_cpus() |
| 905 | If nwriters_stress Then |
| 906 | lock_is_write_held = 0 |
| 907 | writer statistics = kmalloc_array - allocate memory for an array.*@n: number of elements.*@size: element size.*@flags: the type of memory to allocate (see kmalloc). |
| 910 | If ( writer statistics == NULL) Then |
| 916 | When i < nrealwriters_stress cycle |
| 917 | n_lock_fail = 0 |
| 918 | n_lock_acquired = 0 |
| 922 | If readlock Then |
| 923 | If nreaders_stress >= 0 Then nrealreaders_stress = nreaders_stress |
| 925 | Else |
| 931 | If nwriters_stress < 0 Then nrealwriters_stress = num_online_cpus() |
| 936 | If nreaders_stress Then |
| 937 | lock_is_read_held = 0 |
| 938 | reader statistics = kmalloc_array - allocate memory for an array.*@n: number of elements.*@size: element size.*@flags: the type of memory to allocate (see kmalloc). |
| 941 | If ( reader statistics == NULL) Then |
| 949 | When i < nrealreaders_stress cycle |
| 950 | n_lock_fail = 0 |
| 951 | n_lock_acquired = 0 |
| 956 | lock_torture_print_module_parms(cur_ops, "Start of test") |
| 959 | If onoff_interval > 0 Then |
| 960 | firsterr = torture_onoff_init(onoff_holdoff * HZ, onoff_interval * HZ, NULL) |
| 965 | If shuffle_interval > 0 Then |
| 970 | If shutdown_secs > 0 Then |
| 976 | If stutter > 0 Then |
| 982 | If nwriters_stress Then |
| 983 | writer_tasks = kcalloc - allocate memory for an array. The memory is set to zero.*@n: number of elements.*@size: element size.*@flags: the type of memory to allocate (see kmalloc). |
| 986 | If (writer_tasks == NULL) Then |
| 993 | If readlock Then |
| 994 | reader_tasks = kcalloc - allocate memory for an array. The memory is set to zero.*@n: number of elements.*@size: element size.*@flags: the type of memory to allocate (see kmalloc). |
| 997 | If (reader_tasks == NULL) Then |
| 998 | VERBOSE_TOROUT_ERRSTRING("reader_tasks: Out of memory") |
| 1000 | writer_tasks = NULL |
| 1002 | Go to unwind |
| 1014 | When i < nrealwriters_stress || j < nrealreaders_stress cycle |
| 1016 | If i >= nrealwriters_stress Then Go to create_reader |
| 1020 | firsterr = torture_create_kthread(Lock torture writer kthread. Repeatedly acquires and releases* the lock, checking for duplicate acquisitions., & writer statistics [i], writer_tasks[i]) |
| 1025 | create_reader : |
| 1026 | If readlock == NULL || j >= nrealreaders_stress Then Continue |
| 1034 | If stat_interval > 0 Then |
| 1041 | Return 0 |
| 1043 | unwind : |
| 1045 | Forward reference. |
| 1046 | Return firsterr |
| Source code conversion tool public plug-in interface | X |
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |