Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/unittests/kdoc-test.yaml
170831 views
1
# SPDX-License-Identifier: GPL-2.0
2
# Copyright (c) 2026: Mauro Carvalho Chehab <[email protected]>
3
4
# Test cases for the dynamic tests.
5
# Useful to test if kernel-doc classes are doing what it is expected.
6
#
7
8
tests:
9
- name: func1
10
fname: mock_functions.c
11
description: "Simplest function test: do nothing, just rst output"
12
13
source: |
14
/**
15
* func1 - Not exported function
16
* @arg1: @arg1 does nothing
17
*
18
* Does nothing
19
*
20
* return:
21
* always return 0.
22
*/
23
int func1(char *arg1) { return 0; };
24
25
expected:
26
- rst: |
27
.. c:function:: int func1 (char *arg1)
28
29
Not exported function
30
31
.. container:: kernelindent
32
33
**Parameters**
34
35
``char *arg1``
36
**arg1** does nothing
37
38
**Description**
39
40
Does nothing
41
42
**Return**
43
44
always return 0.
45
46
# TODO: how to handle timestamps at .TH?
47
man: |
48
.TH "func1" 9 "February 2026" "" "Kernel API Manual"
49
.SH NAME
50
func1 \- Not exported function
51
.SH SYNOPSIS
52
.B "int" func1
53
.BI "(char *arg1 " ");"
54
.SH ARGUMENTS
55
.IP "arg1" 12
56
\fIarg1\fP does nothing
57
.SH "DESCRIPTION"
58
Does nothing
59
.SH "RETURN"
60
always return 0.
61
.SH "SEE ALSO"
62
.PP
63
Kernel file \fBmock_functions.c\fR
64
65
- name: func2
66
fname: func2.c
67
description: Simple test with exports
68
69
source: |
70
/**
71
* func2() - Exported function
72
* @arg1: @arg1 does nothing
73
*
74
* Does nothing
75
*
76
* return:
77
* always return 0.
78
*/
79
int func2(char *arg1) { return 0; };
80
EXPORT_SYMBOL(func2);
81
82
exports: func2
83
expected:
84
- kdoc_item:
85
name: func2
86
type: function
87
declaration_start_line: 1
88
89
sections:
90
Description: |
91
Does nothing
92
93
Return: |
94
always return 0.
95
96
sections_start_lines:
97
Description: 3
98
Return: 6
99
100
parameterdescs:
101
arg1: |
102
@arg1 does nothing
103
parameterlist:
104
- arg1
105
parameterdesc_start_lines:
106
arg1: 2
107
parametertypes:
108
arg1: char *arg1
109
110
other_stuff:
111
func_macro: false
112
functiontype: int
113
purpose: "Exported function"
114
typedef: false
115
116
rst: |
117
.. c:function:: int func2 (char *arg1)
118
119
Exported function
120
121
.. container:: kernelindent
122
123
**Parameters**
124
125
``char *arg1``
126
**arg1** does nothing
127
128
**Description**
129
130
Does nothing
131
132
**Return**
133
134
always return 0.
135
136
man: |
137
.TH "func2" 9 "February 2026" "" "Kernel API Manual"
138
.SH NAME
139
func2 \- Exported function
140
.SH SYNOPSIS
141
.B "int" func2
142
.BI "(char *arg1 " ");"
143
.SH ARGUMENTS
144
.IP "arg1" 12
145
\fIarg1\fP does nothing
146
.SH "DESCRIPTION"
147
Does nothing
148
.SH "RETURN"
149
always return 0.
150
.SH "SEE ALSO"
151
.PP
152
Kernel file \fBfunc2.c\fR
153
154
- name: doc_with_complex_table
155
description: Test if complex tables are handled
156
fname: mock.c
157
source: |
158
/**
159
* DOC: Supported input formats and encodings
160
*
161
* Depending on the Hardware configuration of the Controller IP, it supports
162
* a subset of the following input formats and encodings on its internal
163
* 48bit bus.
164
*
165
* +----------------------+----------------------------------+------------------------------+
166
* | Format Name | Format Code | Encodings |
167
* +======================+==================================+==============================+
168
* | RGB 4:4:4 8bit | ``MEDIA_BUS_FMT_RGB888_1X24`` | ``V4L2_YCBCR_ENC_DEFAULT`` |
169
* +----------------------+----------------------------------+------------------------------+
170
* | RGB 4:4:4 10bits | ``MEDIA_BUS_FMT_RGB101010_1X30`` | ``V4L2_YCBCR_ENC_DEFAULT`` |
171
* +----------------------+----------------------------------+------------------------------+
172
*/
173
expected:
174
- man: |
175
.TH "Supported input formats and encodings" 9 "March 2026" "" "Kernel API Manual"
176
.SH "Supported input formats and encodings"
177
Depending on the Hardware configuration of the Controller IP, it supports
178
a subset of the following input formats and encodings on its internal
179
48bit bus.
180
.PP
181
182
183
.TS
184
box;
185
l l l.
186
\fBFormat Name\fP \fBFormat Code\fP \fBEncodings\fP
187
_
188
RGB 4:4:4 8bit ``MEDIA_BUS_FMT_RGB888_1X24 V4L2_YCBCR_ENC_DEFAULT
189
RGB 4:4:4 10bits MEDIA_BUS_FMT_RGB101010_1X30 V4L2_YCBCR_ENC_DEFAULT``
190
.TE
191
.SH "SEE ALSO"
192
.PP
193
Kernel file \fBmock.c\fR
194
195
rst: |-
196
.. _Supported input formats and encodings:
197
**Supported input formats and encodings**
198
Depending on the Hardware configuration of the Controller IP, it supports
199
a subset of the following input formats and encodings on its internal
200
48bit bus.
201
+----------------------+----------------------------------+------------------------------+
202
| Format Name | Format Code | Encodings |
203
+======================+==================================+==============================+
204
| RGB 4:4:4 8bit | ``MEDIA_BUS_FMT_RGB888_1X24`` | ``V4L2_YCBCR_ENC_DEFAULT`` |
205
+----------------------+----------------------------------+------------------------------+
206
| RGB 4:4:4 10bits | ``MEDIA_BUS_FMT_RGB101010_1X30`` | ``V4L2_YCBCR_ENC_DEFAULT`` |
207
+----------------------+----------------------------------+------------------------------+
208
- name: func_with_ascii_artwork
209
description: Test if ascii artwork is properly output
210
fname: mock.c
211
source: |
212
/**
213
* add_cxl_resources() - reflect CXL fixed memory windows in iomem_resource
214
* @cxl_res: A standalone resource tree where each CXL window is a sibling
215
*
216
* Walk each CXL window in @cxl_res and add it to iomem_resource potentially
217
* expanding its boundaries to ensure that any conflicting resources become
218
* children. If a window is expanded it may then conflict with a another window
219
* entry and require the window to be truncated or trimmed. Consider this
220
* situation::
221
*
222
* |-- "CXL Window 0" --||----- "CXL Window 1" -----|
223
* |--------------- "System RAM" -------------|
224
*
225
* ...where platform firmware has established as System RAM resource across 2
226
* windows, but has left some portion of window 1 for dynamic CXL region
227
* provisioning. In this case "Window 0" will span the entirety of the "System
228
* RAM" span, and "CXL Window 1" is truncated to the remaining tail past the end
229
* of that "System RAM" resource.
230
*/
231
static int add_cxl_resources(struct resource *cxl_res);
232
expected:
233
- man: |-
234
.TH "add_cxl_resources" 9 "March 2026" "" "Kernel API Manual"
235
.SH NAME
236
add_cxl_resources \- reflect CXL fixed memory windows in iomem_resource
237
.SH SYNOPSIS
238
.B "int" add_cxl_resources
239
.BI "(struct resource *cxl_res " ");"
240
.SH ARGUMENTS
241
.IP "cxl_res" 12
242
A standalone resource tree where each CXL window is a sibling
243
.SH "DESCRIPTION"
244
Walk each CXL window in \fIcxl_res\fP and add it to iomem_resource potentially
245
expanding its boundaries to ensure that any conflicting resources become
246
children. If a window is expanded it may then conflict with a another window
247
entry and require the window to be truncated or trimmed. Consider this
248
situation:
249
.nf
250
251
|-- "CXL Window 0" --||----- "CXL Window 1" -----|
252
|--------------- "System RAM" -------------|
253
254
255
.fi
256
.PP
257
258
\&...where platform firmware has established as System RAM resource across 2
259
windows, but has left some portion of window 1 for dynamic CXL region
260
provisioning. In this case "Window 0" will span the entirety of the "System
261
RAM" span, and "CXL Window 1" is truncated to the remaining tail past the end
262
of that "System RAM" resource.
263
.SH "SEE ALSO"
264
.PP
265
Kernel file \fBmock.c\fR
266
rst: |
267
.. c:function:: int add_cxl_resources (struct resource *cxl_res)
268
269
reflect CXL fixed memory windows in iomem_resource
270
271
.. container:: kernelindent
272
273
**Parameters**
274
275
``struct resource *cxl_res``
276
A standalone resource tree where each CXL window is a sibling
277
278
**Description**
279
280
Walk each CXL window in **cxl_res** and add it to iomem_resource potentially
281
expanding its boundaries to ensure that any conflicting resources become
282
children. If a window is expanded it may then conflict with a another window
283
entry and require the window to be truncated or trimmed. Consider this
284
situation::
285
286
|-- "CXL Window 0" --||----- "CXL Window 1" -----|
287
|--------------- "System RAM" -------------|
288
289
...where platform firmware has established as System RAM resource across 2
290
windows, but has left some portion of window 1 for dynamic CXL region
291
provisioning. In this case "Window 0" will span the entirety of the "System
292
RAM" span, and "CXL Window 1" is truncated to the remaining tail past the end
293
of that "System RAM" resource.
294
295
- name: simple_tables
296
description: Test formatting two simple tables
297
fname: mock.c
298
source: |
299
/**
300
* bitmap_onto - translate one bitmap relative to another
301
* @dst: resulting translated bitmap
302
* @orig: original untranslated bitmap
303
* @relmap: bitmap relative to which translated
304
* @bits: number of bits in each of these bitmaps
305
*
306
* =============== ============== =================
307
* @orig tmp @dst
308
* 0 0 40
309
* 1 1 41
310
* =============== ============== =================
311
*
312
* And:
313
*
314
* =============== ============== =================
315
* @orig tmp @dst
316
* =============== ============== =================
317
* 9 9 95
318
* 10 0 40 [#f1]_
319
* =============== ============== =================
320
*/
321
void bitmap_onto(unsigned long *dst, const unsigned long *orig,
322
const unsigned long *relmap, unsigned int bits);
323
expected:
324
- man: |
325
.TH "bitmap_onto" 9 "March 2026" "" "Kernel API Manual"
326
.SH NAME
327
bitmap_onto \- translate one bitmap relative to another
328
.SH SYNOPSIS
329
.B "void" bitmap_onto
330
.BI "(unsigned long *dst " ","
331
.BI "const unsigned long *orig " ","
332
.BI "const unsigned long *relmap " ","
333
.BI "unsigned int bits " ");"
334
.SH ARGUMENTS
335
.IP "dst" 12
336
resulting translated bitmap
337
.IP "orig" 12
338
original untranslated bitmap
339
.IP "relmap" 12
340
bitmap relative to which translated
341
.IP "bits" 12
342
number of bits in each of these bitmaps
343
.SH "DESCRIPTION"
344
345
.TS
346
box;
347
l l l.
348
\fIorig\fP tmp \fIdst\fP
349
0 0 40
350
1 1 41
351
.TE
352
.PP
353
354
And:
355
.PP
356
357
358
.TS
359
box;
360
l l l.
361
\fIorig\fP tmp \fIdst\fP
362
.TE
363
9 9 95
364
10 0 40 [#f1]_
365
.SH "SEE ALSO"
366
.PP
367
Kernel file \fBmock.c\fR
368
369
rst: |
370
.. c:function:: void bitmap_onto (unsigned long *dst, const unsigned long *orig, const unsigned long *relmap, unsigned int bits)
371
372
translate one bitmap relative to another
373
374
.. container:: kernelindent
375
376
**Parameters**
377
378
``unsigned long *dst``
379
resulting translated bitmap
380
381
``const unsigned long *orig``
382
original untranslated bitmap
383
384
``const unsigned long *relmap``
385
bitmap relative to which translated
386
387
``unsigned int bits``
388
number of bits in each of these bitmaps
389
390
**Description**
391
392
=============== ============== =================
393
**orig** tmp **dst**
394
0 0 40
395
1 1 41
396
=============== ============== =================
397
398
And:
399
400
=============== ============== =================
401
**orig** tmp **dst**
402
=============== ============== =================
403
9 9 95
404
10 0 40 [#f1]_
405
=============== ============== =================
406
407
#
408
# Variable tests from Randy Dunlap's testset
409
#
410
- name: unsigned_long_var_on_uppercase
411
description: Test an unsigned long varaible in uppercase
412
fname: mock-vars.c
413
source: |
414
/**
415
* var ROOT_DEV - system root device
416
*
417
* @ROOT_DEV is either the successful root device or the root device
418
* that failed boot in the boot failure message.
419
*/
420
unsigned long ROOT_DEV;
421
expected:
422
- man: |
423
.TH "var ROOT_DEV" 9 "February 2026" "" "Kernel API Manual"
424
.SH NAME
425
ROOT_DEV \- system root device
426
.SH SYNOPSIS
427
unsigned long ROOT_DEV;
428
.SH "Description"
429
\fIROOT_DEV\fP is either the successful root device or the root device
430
that failed boot in the boot failure message.
431
.SH "SEE ALSO"
432
.PP
433
Kernel file \fBmock-vars.c\fR
434
rst: |
435
.. c:macro:: ROOT_DEV
436
437
``unsigned long ROOT_DEV;``
438
439
system root device
440
441
**Description**
442
443
**ROOT_DEV** is either the successful root device or the root device
444
that failed boot in the boot failure message.
445
- name: enum_var
446
description: Test an enum var with __read_mostly
447
fname: mock-vars.c
448
source: |
449
/**
450
* var system_state - system state used during boot or suspend/hibernate/resume
451
*
452
* @system_state can be used during boot to determine if it is safe to
453
* make certain calls to other parts of the kernel. It can also be used
454
* during suspend/hibernate or resume to determine the order of actions
455
* that need to be executed. The numerical values of system_state are
456
* sometimes used in numerical ordering tests, so the relative values
457
* must not be altered.
458
*/
459
enum system_states system_state __read_mostly;
460
expected:
461
- man: |
462
.TH "var system_state" 9 "February 2026" "" "Kernel API Manual"
463
.SH NAME
464
system_state \- system state used during boot or suspend/hibernate/resume
465
.SH SYNOPSIS
466
enum system_states system_state __read_mostly;
467
.SH "Description"
468
\fIsystem_state\fP can be used during boot to determine if it is safe to
469
make certain calls to other parts of the kernel. It can also be used
470
during suspend/hibernate or resume to determine the order of actions
471
that need to be executed. The numerical values of system_state are
472
sometimes used in numerical ordering tests, so the relative values
473
must not be altered.
474
.SH "SEE ALSO"
475
.PP
476
Kernel file \fBmock-vars.c\fR
477
rst: |
478
.. c:macro:: system_state
479
480
``enum system_states system_state __read_mostly;``
481
482
system state used during boot or suspend/hibernate/resume
483
484
**Description**
485
486
**system_state** can be used during boot to determine if it is safe to
487
make certain calls to other parts of the kernel. It can also be used
488
during suspend/hibernate or resume to determine the order of actions
489
that need to be executed. The numerical values of system_state are
490
sometimes used in numerical ordering tests, so the relative values
491
must not be altered.
492
- name: char_pointer_var
493
description: Test char * var with __ro_after_init
494
fname: mock-vars.c
495
source: |
496
/**
497
* var saved_command_line - kernel's command line, saved from use at
498
* any later time in the kernel.
499
*/
500
char *saved_command_line __ro_after_init;
501
expected:
502
- man: |
503
.TH "var saved_command_line" 9 "February 2026" "" "Kernel API Manual"
504
.SH NAME
505
saved_command_line \- kernel's command line, saved from use at any later time in the kernel.
506
.SH SYNOPSIS
507
char *saved_command_line __ro_after_init;
508
.SH "SEE ALSO"
509
.PP
510
Kernel file \fBmock-vars.c\fR
511
rst: |
512
.. c:macro:: saved_command_line
513
514
``char *saved_command_line __ro_after_init;``
515
516
kernel's command line, saved from use at any later time in the kernel.
517
- name: unsigned_long_with_default
518
description: Test an unsigned long var that is set to a default value
519
fname: mock-vars.c
520
source: |
521
/**
522
* var loop_per_jiffy - calculated loop count needed to consume one jiffy
523
* of time
524
*/
525
unsigned long loops_per_jiffy = (1<<12);
526
expected:
527
- man: |
528
.TH "var loops_per_jiffy" 9 "February 2026" "" "Kernel API Manual"
529
.SH NAME
530
loops_per_jiffy \- calculated loop count needed to consume one jiffy of time
531
.SH SYNOPSIS
532
unsigned long loops_per_jiffy = (1<<12);
533
.SH "Initialization"
534
default: (1<<12)
535
.SH "SEE ALSO"
536
.PP
537
Kernel file \fBmock-vars.c\fR
538
rst: |
539
.. c:macro:: loops_per_jiffy
540
541
``unsigned long loops_per_jiffy = (1<<12);``
542
543
calculated loop count needed to consume one jiffy of time
544
545
**Initialization**
546
547
default: ``(1<<12)``
548
- name: unsigned_long
549
description: test a simple unsigned long variable.
550
fname: mock-vars.c
551
source: |
552
/**
553
* var preset_lpj - lpj (loops per jiffy) value set from kernel
554
* command line using "lpj=VALUE"
555
*
556
* See Documentation/admin-guide/kernel-parameters.txt ("lpj=") for details.
557
*/
558
unsigned long preset_lpj;
559
expected:
560
- man: |
561
.TH "var preset_lpj" 9 "February 2026" "" "Kernel API Manual"
562
.SH NAME
563
preset_lpj \- lpj (loops per jiffy) value set from kernel command line using "lpj=VALUE"
564
.SH SYNOPSIS
565
unsigned long preset_lpj;
566
.SH "Description"
567
See Documentation/admin-guide/kernel-parameters.txt ("lpj=") for details.
568
.SH "SEE ALSO"
569
.PP
570
Kernel file \fBmock-vars.c\fR
571
rst: |
572
.. c:macro:: preset_lpj
573
574
``unsigned long preset_lpj;``
575
576
lpj (loops per jiffy) value set from kernel command line using "lpj=VALUE"
577
578
**Description**
579
580
See Documentation/admin-guide/kernel-parameters.txt ("lpj=") for details.
581
- name: char_array
582
description: test a char array variable
583
fname: mock-vars.c
584
source: |
585
/**
586
* var linux_proc_banner - text used from /proc/version file
587
*
588
* * first %s is sysname (e.g., "Linux")
589
* * second %s is release
590
* * third %s is version
591
*/
592
char linux_proc_banner[];
593
expected:
594
- man: |
595
.TH "var linux_proc_banner" 9 "February 2026" "" "Kernel API Manual"
596
.SH NAME
597
linux_proc_banner \- text used from /proc/version file
598
.SH SYNOPSIS
599
char linux_proc_banner[];
600
.SH "Description"
601
.IP \[bu]
602
first s is sysname (e.g., "Linux")
603
.IP \[bu]
604
second s is release
605
.IP \[bu]
606
third s is version
607
.SH "SEE ALSO"
608
.PP
609
Kernel file \fBmock-vars.c\fR
610
rst: |
611
.. c:macro:: linux_proc_banner
612
613
``char linux_proc_banner[];``
614
615
text used from /proc/version file
616
617
**Description**
618
619
* first ``s`` is sysname (e.g., "Linux")
620
* second ``s`` is release
621
* third ``s`` is version
622
- name: const_char_array
623
description: test a const char array variable
624
fname: mock-vars.c
625
source: |
626
/**
627
* var linux_banner - Linux boot banner, usually printed at boot time
628
*/
629
const char linux_banner[];
630
expected:
631
- man: |
632
.TH "var linux_banner" 9 "February 2026" "" "Kernel API Manual"
633
.SH NAME
634
linux_banner \- Linux boot banner, usually printed at boot time
635
.SH SYNOPSIS
636
const char linux_banner[];
637
.SH "SEE ALSO"
638
.PP
639
Kernel file \fBmock-vars.c\fR
640
rst: |
641
.. c:macro:: linux_banner
642
643
``const char linux_banner[];``
644
645
Linux boot banner, usually printed at boot time
646
- name: static_atomic64_t_var
647
description: test a static atomi64_t variable
648
fname: mock-vars.c
649
source: |
650
/**
651
* var diskseq - unique sequence number for block device instances
652
*
653
* Allows userspace to associate uevents to the lifetime of a device
654
*/
655
static atomic64_t diskseq;
656
expected:
657
- man: |
658
.TH "var diskseq" 9 "February 2026" "" "Kernel API Manual"
659
.SH NAME
660
diskseq \- unique sequence number for block device instances
661
.SH SYNOPSIS
662
static atomic64_t diskseq;
663
.SH "Description"
664
Allows userspace to associate uevents to the lifetime of a device
665
.SH "SEE ALSO"
666
.PP
667
Kernel file \fBmock-vars.c\fR
668
rst: |
669
.. c:macro:: diskseq
670
671
``static atomic64_t diskseq;``
672
673
unique sequence number for block device instances
674
675
**Description**
676
677
Allows userspace to associate uevents to the lifetime of a device
678
- name: unsigned_long_on_init
679
description: test an unsigned long var at "init" with a different timestamp.
680
fname: init/mock-vars.c
681
source: |
682
/**
683
* var rtnl_mutex - historical global lock for networking control operations.
684
*
685
* @rtnl_mutex is used to serialize rtnetlink requests
686
* and protect all kernel internal data structures related to networking.
687
*
688
* See Documentation/networking/netdevices.rst for details.
689
* Often known as the rtnl_lock, although rtnl_lock is a kernel function.
690
*/
691
unsigned long rtnl_mutex;
692
expected:
693
- man: |
694
.TH "var rtnl_mutex" 9 "February 2026" "init" "Kernel API Manual"
695
.SH NAME
696
rtnl_mutex \- historical global lock for networking control operations.
697
.SH SYNOPSIS
698
unsigned long rtnl_mutex;
699
.SH "Description"
700
\fIrtnl_mutex\fP is used to serialize rtnetlink requests
701
and protect all kernel internal data structures related to networking.
702
.PP
703
704
See Documentation/networking/netdevices.rst for details.
705
Often known as the rtnl_lock, although rtnl_lock is a kernel function.
706
.SH "SEE ALSO"
707
.PP
708
Kernel file \fBinit/mock-vars.c\fR
709
rst: |
710
.. c:macro:: rtnl_mutex
711
712
``unsigned long rtnl_mutex;``
713
714
historical global lock for networking control operations.
715
716
**Description**
717
718
**rtnl_mutex** is used to serialize rtnetlink requests
719
and protect all kernel internal data structures related to networking.
720
721
See Documentation/networking/netdevices.rst for details.
722
Often known as the rtnl_lock, although rtnl_lock is a kernel function.
723
724
725
- name: struct_kcov
726
fname: mock_tests/kdoc-drop-ctx-lock.c
727
source: |
728
/**
729
* struct kcov - kcov descriptor (one per opened debugfs file).
730
* State transitions of the descriptor:
731
*
732
* - initial state after open()
733
* - then there must be a single ioctl(KCOV_INIT_TRACE) call
734
* - then, mmap() call (several calls are allowed but not useful)
735
* - then, ioctl(KCOV_ENABLE, arg), where arg is
736
* KCOV_TRACE_PC - to trace only the PCs
737
* or
738
* KCOV_TRACE_CMP - to trace only the comparison operands
739
* - then, ioctl(KCOV_DISABLE) to disable the task.
740
*
741
* Enabling/disabling ioctls can be repeated (only one task a time allowed).
742
*/
743
struct kcov {
744
/**
745
* @refcount: Reference counter. We keep one for:
746
* - opened file descriptor
747
* - task with enabled coverage (we can't unwire it from another task)
748
* - each code section for remote coverage collection
749
*/
750
refcount_t refcount;
751
/**
752
* @lock: The lock protects mode, size, area and t.
753
*/
754
spinlock_t lock;
755
/**
756
* @mode: the kcov_mode
757
*/
758
enum kcov_mode mode __guarded_by(&lock);
759
/**
760
* @size: Size of arena (in long's).
761
*/
762
unsigned int size __guarded_by(&lock);
763
/**
764
* @area: Coverage buffer shared with user space.
765
*/
766
void *area __guarded_by(&lock);
767
/**
768
* @t: Task for which we collect coverage, or NULL.
769
*/
770
struct task_struct *t __guarded_by(&lock);
771
/**
772
* @remote: Collecting coverage from remote (background) threads.
773
*/
774
bool remote;
775
/**
776
* @remote_size: Size of remote area (in long's).
777
*/
778
unsigned int remote_size;
779
/**
780
* @sequence: Sequence is incremented each time kcov is reenabled,
781
* used by kcov_remote_stop(), see the comment there.
782
*/
783
int sequence;
784
};
785
expected:
786
- man: |
787
.TH "struct kcov" 9 "February 2026" "mock_tests" "Kernel API Manual"
788
.SH NAME
789
struct kcov \- kcov descriptor (one per opened debugfs file). State transitions of the descriptor:
790
.SH SYNOPSIS
791
struct kcov {
792
.br
793
.BI " refcount_t refcount;"
794
.br
795
.BI " spinlock_t lock;"
796
.br
797
.BI " enum kcov_mode mode;"
798
.br
799
.BI " unsigned int size;"
800
.br
801
.BI " void *area;"
802
.br
803
.BI " struct task_struct *t;"
804
.br
805
.BI " bool remote;"
806
.br
807
.BI " unsigned int remote_size;"
808
.br
809
.BI " int sequence;"
810
.br
811
.BI "
812
};
813
.br
814
815
.SH Members
816
.IP "refcount" 12
817
Reference counter. We keep one for:
818
.IP \[bu]
819
opened file descriptor
820
.IP \[bu]
821
task with enabled coverage (we can't unwire it from another task)
822
.IP \[bu]
823
each code section for remote coverage collection
824
.IP "lock" 12
825
The lock protects mode, size, area and t.
826
.IP "mode" 12
827
the kcov_mode
828
.IP "size" 12
829
Size of arena (in long's).
830
.IP "area" 12
831
Coverage buffer shared with user space.
832
.IP "t" 12
833
Task for which we collect coverage, or NULL.
834
.IP "remote" 12
835
Collecting coverage from remote (background) threads.
836
.IP "remote_size" 12
837
Size of remote area (in long's).
838
.IP "sequence" 12
839
Sequence is incremented each time kcov is reenabled,
840
used by \fBkcov_remote_stop\fP, see the comment there.
841
.SH "Description"
842
.IP \[bu]
843
initial state after \fBopen\fP
844
.IP \[bu]
845
then there must be a single ioctl(KCOV_INIT_TRACE) call
846
.IP \[bu]
847
then, \fBmmap\fP call (several calls are allowed but not useful)
848
.IP \[bu]
849
then, ioctl(KCOV_ENABLE, arg), where arg is
850
KCOV_TRACE_PC - to trace only the PCs
851
or
852
KCOV_TRACE_CMP - to trace only the comparison operands
853
.IP \[bu]
854
then, ioctl(KCOV_DISABLE) to disable the task.
855
.PP
856
857
Enabling/disabling ioctls can be repeated (only one task a time allowed).
858
.SH "SEE ALSO"
859
.PP
860
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
861
rst: |
862
.. c:struct:: kcov
863
864
kcov descriptor (one per opened debugfs file). State transitions of the descriptor:
865
866
.. container:: kernelindent
867
868
**Definition**::
869
870
struct kcov {
871
refcount_t refcount;
872
spinlock_t lock;
873
enum kcov_mode mode;
874
unsigned int size;
875
void *area;
876
struct task_struct *t;
877
bool remote;
878
unsigned int remote_size;
879
int sequence;
880
};
881
882
**Members**
883
884
``refcount``
885
Reference counter. We keep one for:
886
- opened file descriptor
887
- task with enabled coverage (we can't unwire it from another task)
888
- each code section for remote coverage collection
889
890
``lock``
891
The lock protects mode, size, area and t.
892
893
``mode``
894
the kcov_mode
895
896
``size``
897
Size of arena (in long's).
898
899
``area``
900
Coverage buffer shared with user space.
901
902
``t``
903
Task for which we collect coverage, or NULL.
904
905
``remote``
906
Collecting coverage from remote (background) threads.
907
908
``remote_size``
909
Size of remote area (in long's).
910
911
``sequence``
912
Sequence is incremented each time kcov is reenabled,
913
used by kcov_remote_stop(), see the comment there.
914
915
916
**Description**
917
918
- initial state after open()
919
- then there must be a single ioctl(KCOV_INIT_TRACE) call
920
- then, mmap() call (several calls are allowed but not useful)
921
- then, ioctl(KCOV_ENABLE, arg), where arg is
922
KCOV_TRACE_PC - to trace only the PCs
923
or
924
KCOV_TRACE_CMP - to trace only the comparison operands
925
- then, ioctl(KCOV_DISABLE) to disable the task.
926
927
Enabling/disabling ioctls can be repeated (only one task a time allowed).
928
929
- name: pool_offset
930
description: mock_tests/kdoc-drop-ctx-lock.c line 83
931
fname: mock_tests/kdoc-drop-ctx-lock.c
932
source: |
933
/**
934
* var pool_offset - Offset to the unused space in the currently used pool.
935
*
936
*/
937
size_t pool_offset __guarded_by(&pool_lock) = DEPOT_POOL_SIZE;
938
expected:
939
- man: |
940
.TH "var pool_offset" 9 "February 2026" "mock_tests" "Kernel API Manual"
941
.SH NAME
942
pool_offset \- Offset to the unused space in the currently used pool.
943
.SH SYNOPSIS
944
size_t pool_offset __guarded_by(&pool_lock) = DEPOT_POOL_SIZE;
945
.SH "Initialization"
946
default: DEPOT_POOL_SIZE
947
.SH "SEE ALSO"
948
.PP
949
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
950
rst: |
951
.. c:macro:: pool_offset
952
953
``size_t pool_offset __guarded_by(&pool_lock) = DEPOT_POOL_SIZE;``
954
955
Offset to the unused space in the currently used pool.
956
957
**Initialization**
958
959
default: ``DEPOT_POOL_SIZE``
960
- name: free_stacks
961
description: mock_tests/kdoc-drop-ctx-lock.c line 88
962
fname: mock_tests/kdoc-drop-ctx-lock.c
963
source: |
964
/**
965
* var free_stacks - Freelist of stack records within stack_pools.
966
*
967
*/
968
__guarded_by(&pool_lock) LIST_HEAD(free_stacks);
969
expected:
970
- man: |
971
.TH "var free_stacks" 9 "February 2026" "mock_tests" "Kernel API Manual"
972
.SH NAME
973
free_stacks \- Freelist of stack records within stack_pools.
974
.SH SYNOPSIS
975
__guarded_by(&pool_lock) LIST_HEAD(free_stacks);
976
.SH "SEE ALSO"
977
.PP
978
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
979
rst: |
980
.. c:macro:: free_stacks
981
982
``__guarded_by(&pool_lock) LIST_HEAD(free_stacks);``
983
984
Freelist of stack records within stack_pools.
985
- name: stack_pools
986
description: mock_tests/kdoc-drop-ctx-lock.c line 94
987
fname: mock_tests/kdoc-drop-ctx-lock.c
988
source: |
989
/**
990
* var stack_pools - Array of memory regions that store stack records.
991
*
992
*/
993
void **stack_pools __pt_guarded_by(&pool_lock);
994
expected:
995
- man: |
996
.TH "var stack_pools" 9 "February 2026" "mock_tests" "Kernel API Manual"
997
.SH NAME
998
stack_pools \- Array of memory regions that store stack records.
999
.SH SYNOPSIS
1000
void **stack_pools __pt_guarded_by(&pool_lock);
1001
.SH "SEE ALSO"
1002
.PP
1003
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1004
rst: |
1005
.. c:macro:: stack_pools
1006
1007
``void **stack_pools __pt_guarded_by(&pool_lock);``
1008
1009
Array of memory regions that store stack records.
1010
- name: prepare_report_consumer
1011
description: mock_tests/kdoc-drop-ctx-lock.c line 103
1012
fname: mock_tests/kdoc-drop-ctx-lock.c
1013
source: |
1014
/**
1015
* prepare_report_consumer - prepare the report consumer
1016
* @flags: flags
1017
* @ai: not that AI
1018
* @other_info: yes that
1019
*/
1020
bool prepare_report_consumer(unsigned long *flags,
1021
const struct access_info *ai,
1022
struct other_info *other_info)
1023
__cond_acquires(true, &report_lock)
1024
{
1025
expected:
1026
- man: |
1027
.TH "prepare_report_consumer" 9 "February 2026" "mock_tests" "Kernel API Manual"
1028
.SH NAME
1029
prepare_report_consumer \- prepare the report consumer
1030
.SH SYNOPSIS
1031
.B "bool" prepare_report_consumer
1032
.BI "(unsigned long *flags " ","
1033
.BI "const struct access_info *ai " ","
1034
.BI "struct other_info *other_info " ");"
1035
.SH ARGUMENTS
1036
.IP "flags" 12
1037
flags
1038
.IP "ai" 12
1039
not that AI
1040
.IP "other_info" 12
1041
yes that
1042
.SH "SEE ALSO"
1043
.PP
1044
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1045
rst: |
1046
.. c:function:: bool prepare_report_consumer (unsigned long *flags, const struct access_info *ai, struct other_info *other_info)
1047
1048
prepare the report consumer
1049
1050
.. container:: kernelindent
1051
1052
**Parameters**
1053
1054
``unsigned long *flags``
1055
flags
1056
1057
``const struct access_info *ai``
1058
not that AI
1059
1060
``struct other_info *other_info``
1061
yes that
1062
- name: tcp_sigpool_start
1063
description: mock_tests/kdoc-drop-ctx-lock.c line 117
1064
fname: mock_tests/kdoc-drop-ctx-lock.c
1065
source: |
1066
/**
1067
* tcp_sigpool_start - start a tcp message of @id, using @c
1068
* @id: TCP message ID
1069
* @c: the &tcp_sigpool to use
1070
*/
1071
int tcp_sigpool_start(unsigned int id, struct tcp_sigpool *c) __cond_acquires(0, RCU_BH)
1072
{
1073
expected:
1074
- man: |
1075
.TH "tcp_sigpool_start" 9 "February 2026" "mock_tests" "Kernel API Manual"
1076
.SH NAME
1077
tcp_sigpool_start \- start a tcp message of @id, using @c
1078
.SH SYNOPSIS
1079
.B "int" tcp_sigpool_start
1080
.BI "(unsigned int id " ","
1081
.BI "struct tcp_sigpool *c " ");"
1082
.SH ARGUMENTS
1083
.IP "id" 12
1084
TCP message ID
1085
.IP "c" 12
1086
the \fItcp_sigpool\fP to use
1087
.SH "SEE ALSO"
1088
.PP
1089
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1090
rst: |
1091
.. c:function:: int tcp_sigpool_start (unsigned int id, struct tcp_sigpool *c)
1092
1093
start a tcp message of **id**, using **c**
1094
1095
.. container:: kernelindent
1096
1097
**Parameters**
1098
1099
``unsigned int id``
1100
TCP message ID
1101
1102
``struct tcp_sigpool *c``
1103
the :c:type:`tcp_sigpool` to use
1104
- name: undo_report_consumer
1105
description: mock_tests/kdoc-drop-ctx-lock.c line 129
1106
fname: mock_tests/kdoc-drop-ctx-lock.c
1107
source: |
1108
/**
1109
* undo_report_consumer - teardown a report consumer
1110
* @flags: those flags
1111
* @ai: not that AI
1112
* @other_info: yes that
1113
*/
1114
bool undo_report_consumer(unsigned long *flags,
1115
const struct access_info *ai,
1116
struct other_info *other_info)
1117
__cond_releases(true, &report_lock)
1118
{
1119
expected:
1120
- man: |
1121
.TH "undo_report_consumer" 9 "February 2026" "mock_tests" "Kernel API Manual"
1122
.SH NAME
1123
undo_report_consumer \- teardown a report consumer
1124
.SH SYNOPSIS
1125
.B "bool" undo_report_consumer
1126
.BI "(unsigned long *flags " ","
1127
.BI "const struct access_info *ai " ","
1128
.BI "struct other_info *other_info " ");"
1129
.SH ARGUMENTS
1130
.IP "flags" 12
1131
those flags
1132
.IP "ai" 12
1133
not that AI
1134
.IP "other_info" 12
1135
yes that
1136
.SH "SEE ALSO"
1137
.PP
1138
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1139
rst: |
1140
.. c:function:: bool undo_report_consumer (unsigned long *flags, const struct access_info *ai, struct other_info *other_info)
1141
1142
teardown a report consumer
1143
1144
.. container:: kernelindent
1145
1146
**Parameters**
1147
1148
``unsigned long *flags``
1149
those flags
1150
1151
``const struct access_info *ai``
1152
not that AI
1153
1154
``struct other_info *other_info``
1155
yes that
1156
- name: debugfs_enter_cancellation
1157
description: mock_tests/kdoc-drop-ctx-lock.c line 143
1158
fname: mock_tests/kdoc-drop-ctx-lock.c
1159
source: |
1160
/**
1161
* debugfs_enter_cancellation - begin a cancellation operation on @file
1162
* @file: the target file
1163
* @cancellation: the operation to execute
1164
*/
1165
void debugfs_enter_cancellation(struct file *file,
1166
struct debugfs_cancellation *cancellation) __acquires(cancellation)
1167
{ }
1168
expected:
1169
- man: |
1170
.TH "debugfs_enter_cancellation" 9 "February 2026" "mock_tests" "Kernel API Manual"
1171
.SH NAME
1172
debugfs_enter_cancellation \- begin a cancellation operation on @file
1173
.SH SYNOPSIS
1174
.B "void" debugfs_enter_cancellation
1175
.BI "(struct file *file " ","
1176
.BI "struct debugfs_cancellation *cancellation " ");"
1177
.SH ARGUMENTS
1178
.IP "file" 12
1179
the target file
1180
.IP "cancellation" 12
1181
the operation to execute
1182
.SH "SEE ALSO"
1183
.PP
1184
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1185
rst: |
1186
.. c:function:: void debugfs_enter_cancellation (struct file *file, struct debugfs_cancellation *cancellation)
1187
1188
begin a cancellation operation on **file**
1189
1190
.. container:: kernelindent
1191
1192
**Parameters**
1193
1194
``struct file *file``
1195
the target file
1196
1197
``struct debugfs_cancellation *cancellation``
1198
the operation to execute
1199
- name: debugfs_leave_cancellation
1200
description: mock_tests/kdoc-drop-ctx-lock.c line 152
1201
fname: mock_tests/kdoc-drop-ctx-lock.c
1202
source: |
1203
/**
1204
* debugfs_leave_cancellation - wrapup the cancellation operation on @file
1205
* @file: the target file
1206
* @cancellation: the operation to wrapup
1207
*/
1208
void debugfs_leave_cancellation(struct file *file,
1209
struct debugfs_cancellation *cancellation) __releases(cancellation)
1210
{ }
1211
expected:
1212
- man: |
1213
.TH "debugfs_leave_cancellation" 9 "February 2026" "mock_tests" "Kernel API Manual"
1214
.SH NAME
1215
debugfs_leave_cancellation \- wrapup the cancellation operation on @file
1216
.SH SYNOPSIS
1217
.B "void" debugfs_leave_cancellation
1218
.BI "(struct file *file " ","
1219
.BI "struct debugfs_cancellation *cancellation " ");"
1220
.SH ARGUMENTS
1221
.IP "file" 12
1222
the target file
1223
.IP "cancellation" 12
1224
the operation to wrapup
1225
.SH "SEE ALSO"
1226
.PP
1227
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1228
rst: |
1229
.. c:function:: void debugfs_leave_cancellation (struct file *file, struct debugfs_cancellation *cancellation)
1230
1231
wrapup the cancellation operation on **file**
1232
1233
.. container:: kernelindent
1234
1235
**Parameters**
1236
1237
``struct file *file``
1238
the target file
1239
1240
``struct debugfs_cancellation *cancellation``
1241
the operation to wrapup
1242
- name: acpi_os_acquire_lock
1243
description: mock_tests/kdoc-drop-ctx-lock.c line 161
1244
fname: mock_tests/kdoc-drop-ctx-lock.c
1245
source: |
1246
/**
1247
* acpi_os_acquire_lock - Acquire a spinlock.
1248
* @lockp: pointer to the spinlock_t.
1249
*/
1250
acpi_cpu_flags acpi_os_acquire_lock(acpi_spinlock lockp)
1251
__acquires(lockp)
1252
{
1253
expected:
1254
- man: |
1255
.TH "acpi_os_acquire_lock" 9 "February 2026" "mock_tests" "Kernel API Manual"
1256
.SH NAME
1257
acpi_os_acquire_lock \- Acquire a spinlock.
1258
.SH SYNOPSIS
1259
.B "acpi_cpu_flags" acpi_os_acquire_lock
1260
.BI "(acpi_spinlock lockp " ");"
1261
.SH ARGUMENTS
1262
.IP "lockp" 12
1263
pointer to the spinlock_t.
1264
.SH "SEE ALSO"
1265
.PP
1266
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1267
rst: |
1268
.. c:function:: acpi_cpu_flags acpi_os_acquire_lock (acpi_spinlock lockp)
1269
1270
Acquire a spinlock.
1271
1272
.. container:: kernelindent
1273
1274
**Parameters**
1275
1276
``acpi_spinlock lockp``
1277
pointer to the spinlock_t.
1278
- name: acpi_os_release_lock
1279
description: mock_tests/kdoc-drop-ctx-lock.c line 172
1280
fname: mock_tests/kdoc-drop-ctx-lock.c
1281
source: |
1282
/**
1283
* acpi_os_release_lock - Release a spinlock.
1284
* @lockp: pointer to the spinlock_t.
1285
* @not_used: these flags are not used.
1286
*/
1287
void acpi_os_release_lock(acpi_spinlock lockp, acpi_cpu_flags not_used)
1288
__releases(lockp)
1289
{
1290
expected:
1291
- man: |
1292
.TH "acpi_os_release_lock" 9 "February 2026" "mock_tests" "Kernel API Manual"
1293
.SH NAME
1294
acpi_os_release_lock \- Release a spinlock.
1295
.SH SYNOPSIS
1296
.B "void" acpi_os_release_lock
1297
.BI "(acpi_spinlock lockp " ","
1298
.BI "acpi_cpu_flags not_used " ");"
1299
.SH ARGUMENTS
1300
.IP "lockp" 12
1301
pointer to the spinlock_t.
1302
.IP "not_used" 12
1303
these flags are not used.
1304
.SH "SEE ALSO"
1305
.PP
1306
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1307
rst: |
1308
.. c:function:: void acpi_os_release_lock (acpi_spinlock lockp, acpi_cpu_flags not_used)
1309
1310
Release a spinlock.
1311
1312
.. container:: kernelindent
1313
1314
**Parameters**
1315
1316
``acpi_spinlock lockp``
1317
pointer to the spinlock_t.
1318
1319
``acpi_cpu_flags not_used``
1320
these flags are not used.
1321
- name: tx
1322
description: mock_tests/kdoc-drop-ctx-lock.c line 183
1323
fname: mock_tests/kdoc-drop-ctx-lock.c
1324
source: |
1325
/**
1326
* tx - transmit message ID @id
1327
* @id: message ID to transmit
1328
*/
1329
int tx(int id) __must_hold(&txlock)
1330
{
1331
expected:
1332
- man: |
1333
.TH "tx" 9 "February 2026" "mock_tests" "Kernel API Manual"
1334
.SH NAME
1335
tx \- transmit message ID @id
1336
.SH SYNOPSIS
1337
.B "int" tx
1338
.BI "(int id " ");"
1339
.SH ARGUMENTS
1340
.IP "id" 12
1341
message ID to transmit
1342
.SH "SEE ALSO"
1343
.PP
1344
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1345
rst: |
1346
.. c:function:: int tx (int id)
1347
1348
transmit message ID **id**
1349
1350
.. container:: kernelindent
1351
1352
**Parameters**
1353
1354
``int id``
1355
message ID to transmit
1356
- name: contend_for_bm
1357
description: mock_tests/kdoc-drop-ctx-lock.c line 192
1358
fname: mock_tests/kdoc-drop-ctx-lock.c
1359
source: |
1360
/**
1361
* contend_for_bm - try to become the bus master
1362
* @card: the &fw_card (describes the bus)
1363
*/
1364
enum bm_contention_outcome contend_for_bm(struct fw_card *card)
1365
__must_hold(&card->lock)
1366
{
1367
expected:
1368
- man: |
1369
.TH "contend_for_bm" 9 "February 2026" "mock_tests" "Kernel API Manual"
1370
.SH NAME
1371
contend_for_bm \- try to become the bus master
1372
.SH SYNOPSIS
1373
.B "enum bm_contention_outcome" contend_for_bm
1374
.BI "(struct fw_card *card " ");"
1375
.SH ARGUMENTS
1376
.IP "card" 12
1377
the \fIfw_card\fP (describes the bus)
1378
.SH "SEE ALSO"
1379
.PP
1380
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1381
rst: |
1382
.. c:function:: enum bm_contention_outcome contend_for_bm (struct fw_card *card)
1383
1384
try to become the bus master
1385
1386
.. container:: kernelindent
1387
1388
**Parameters**
1389
1390
``struct fw_card *card``
1391
the :c:type:`fw_card` (describes the bus)
1392
- name: prepare_report_producer
1393
description: mock_tests/kdoc-drop-ctx-lock.c line 202
1394
fname: mock_tests/kdoc-drop-ctx-lock.c
1395
source: |
1396
/**
1397
* prepare_report_producer - prepare the report producer
1398
* @flags: still flags
1399
* @ai: some AI
1400
* @other_info: Populate @other_info; requires that the provided
1401
* @other_info not in use.
1402
*/
1403
void prepare_report_producer(unsigned long *flags,
1404
const struct access_info *ai,
1405
struct other_info *other_info)
1406
__must_not_hold(&report_lock)
1407
{ }
1408
expected:
1409
- man: |
1410
.TH "prepare_report_producer" 9 "February 2026" "mock_tests" "Kernel API Manual"
1411
.SH NAME
1412
prepare_report_producer \- prepare the report producer
1413
.SH SYNOPSIS
1414
.B "void" prepare_report_producer
1415
.BI "(unsigned long *flags " ","
1416
.BI "const struct access_info *ai " ","
1417
.BI "struct other_info *other_info " ");"
1418
.SH ARGUMENTS
1419
.IP "flags" 12
1420
still flags
1421
.IP "ai" 12
1422
some AI
1423
.IP "other_info" 12
1424
Populate \fIother_info\fP; requires that the provided
1425
\fIother_info\fP not in use.
1426
.SH "SEE ALSO"
1427
.PP
1428
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1429
rst: |
1430
.. c:function:: void prepare_report_producer (unsigned long *flags, const struct access_info *ai, struct other_info *other_info)
1431
1432
prepare the report producer
1433
1434
.. container:: kernelindent
1435
1436
**Parameters**
1437
1438
``unsigned long *flags``
1439
still flags
1440
1441
``const struct access_info *ai``
1442
some AI
1443
1444
``struct other_info *other_info``
1445
Populate **other_info**; requires that the provided
1446
**other_info** not in use.
1447
- name: crypto_alg_lookup
1448
description: mock_tests/kdoc-drop-ctx-lock.c line 215
1449
fname: mock_tests/kdoc-drop-ctx-lock.c
1450
source: |
1451
/**
1452
* __crypto_alg_lookup() - lookup the algorithm by name/type/mask
1453
* @name: name to search for
1454
* @type: type to search for
1455
* @mask: mask to match
1456
*/
1457
struct crypto_alg *__crypto_alg_lookup(const char *name, u32 type,
1458
u32 mask)
1459
__must_hold_shared(&crypto_alg_sem)
1460
{
1461
expected:
1462
- man: |
1463
.TH "__crypto_alg_lookup" 9 "February 2026" "mock_tests" "Kernel API Manual"
1464
.SH NAME
1465
__crypto_alg_lookup \- lookup the algorithm by name/type/mask
1466
.SH SYNOPSIS
1467
.B "struct crypto_alg *" __crypto_alg_lookup
1468
.BI "(const char *name " ","
1469
.BI "u32 type " ","
1470
.BI "u32 mask " ");"
1471
.SH ARGUMENTS
1472
.IP "name" 12
1473
name to search for
1474
.IP "type" 12
1475
type to search for
1476
.IP "mask" 12
1477
mask to match
1478
.SH "SEE ALSO"
1479
.PP
1480
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1481
rst: |
1482
.. c:function:: struct crypto_alg * __crypto_alg_lookup (const char *name, u32 type, u32 mask)
1483
1484
lookup the algorithm by name/type/mask
1485
1486
.. container:: kernelindent
1487
1488
**Parameters**
1489
1490
``const char *name``
1491
name to search for
1492
1493
``u32 type``
1494
type to search for
1495
1496
``u32 mask``
1497
mask to match
1498
- name: down_read_trylock
1499
description: mock_tests/kdoc-drop-ctx-lock.c line 228
1500
fname: mock_tests/kdoc-drop-ctx-lock.c
1501
source: |
1502
/**
1503
* down_read_trylock - trylock for reading
1504
* @sem: the semaphore to try to lock
1505
*
1506
* Returns: 1 if successful, 0 if contention
1507
*/
1508
extern int down_read_trylock(struct rw_semaphore *sem) __cond_acquires_shared(true, sem);
1509
expected:
1510
- man: |
1511
.TH "down_read_trylock" 9 "February 2026" "mock_tests" "Kernel API Manual"
1512
.SH NAME
1513
down_read_trylock \- trylock for reading
1514
.SH SYNOPSIS
1515
.B "int" down_read_trylock
1516
.BI "(struct rw_semaphore *sem " ");"
1517
.SH ARGUMENTS
1518
.IP "sem" 12
1519
the semaphore to try to lock
1520
.SH "RETURN"
1521
1 if successful, 0 if contention
1522
.SH "SEE ALSO"
1523
.PP
1524
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1525
rst: |
1526
.. c:function:: int down_read_trylock (struct rw_semaphore *sem)
1527
1528
trylock for reading
1529
1530
.. container:: kernelindent
1531
1532
**Parameters**
1533
1534
``struct rw_semaphore *sem``
1535
the semaphore to try to lock
1536
1537
**Return**
1538
1539
1 if successful, 0 if contention
1540
- name: tomoyo_read_lock
1541
description: mock_tests/kdoc-drop-ctx-lock.c line 236
1542
fname: mock_tests/kdoc-drop-ctx-lock.c
1543
source: |
1544
/**
1545
* tomoyo_read_lock - Take lock for protecting policy.
1546
*
1547
* Returns: index number for tomoyo_read_unlock().
1548
*/
1549
int tomoyo_read_lock(void)
1550
__acquires_shared(&tomoyo_ss)
1551
{
1552
expected:
1553
- man: |
1554
.TH "tomoyo_read_lock" 9 "February 2026" "mock_tests" "Kernel API Manual"
1555
.SH NAME
1556
tomoyo_read_lock \- Take lock for protecting policy.
1557
.SH SYNOPSIS
1558
.B "int" tomoyo_read_lock
1559
.BI "(void " ");"
1560
.SH ARGUMENTS
1561
.IP "void" 12
1562
no arguments
1563
.SH "RETURN"
1564
index number for \fBtomoyo_read_unlock\fP.
1565
.SH "SEE ALSO"
1566
.PP
1567
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1568
rst: |
1569
.. c:function:: int tomoyo_read_lock (void)
1570
1571
Take lock for protecting policy.
1572
1573
.. container:: kernelindent
1574
1575
**Parameters**
1576
1577
``void``
1578
no arguments
1579
1580
**Return**
1581
1582
index number for tomoyo_read_unlock().
1583
- name: tomoyo_read_unlock
1584
description: mock_tests/kdoc-drop-ctx-lock.c line 247
1585
fname: mock_tests/kdoc-drop-ctx-lock.c
1586
source: |
1587
/**
1588
* tomoyo_read_unlock - Release lock for protecting policy.
1589
*
1590
* @idx: Index number returned by tomoyo_read_lock().
1591
*/
1592
void tomoyo_read_unlock(int idx)
1593
__releases_shared(&tomoyo_ss)
1594
{ }
1595
expected:
1596
- man: |
1597
.TH "tomoyo_read_unlock" 9 "February 2026" "mock_tests" "Kernel API Manual"
1598
.SH NAME
1599
tomoyo_read_unlock \- Release lock for protecting policy.
1600
.SH SYNOPSIS
1601
.B "void" tomoyo_read_unlock
1602
.BI "(int idx " ");"
1603
.SH ARGUMENTS
1604
.IP "idx" 12
1605
Index number returned by \fBtomoyo_read_lock\fP.
1606
.SH "SEE ALSO"
1607
.PP
1608
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1609
rst: |
1610
.. c:function:: void tomoyo_read_unlock (int idx)
1611
1612
Release lock for protecting policy.
1613
1614
.. container:: kernelindent
1615
1616
**Parameters**
1617
1618
``int idx``
1619
Index number returned by tomoyo_read_lock().
1620
- name: c_stop
1621
description: mock_tests/kdoc-drop-ctx-lock.c line 256
1622
fname: mock_tests/kdoc-drop-ctx-lock.c
1623
source: |
1624
/**
1625
* c_stop - stop the seq_file iteration
1626
* @m: the &struct seq_file
1627
* @p: handle
1628
*/
1629
void c_stop(struct seq_file *m, void *p)
1630
__releases_shared(&crypto_alg_sem)
1631
{ }
1632
expected:
1633
- man: |
1634
.TH "c_stop" 9 "February 2026" "mock_tests" "Kernel API Manual"
1635
.SH NAME
1636
c_stop \- stop the seq_file iteration
1637
.SH SYNOPSIS
1638
.B "void" c_stop
1639
.BI "(struct seq_file *m " ","
1640
.BI "void *p " ");"
1641
.SH ARGUMENTS
1642
.IP "m" 12
1643
the \fIstruct seq_file\fP
1644
.IP "p" 12
1645
handle
1646
.SH "SEE ALSO"
1647
.PP
1648
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1649
rst: |
1650
.. c:function:: void c_stop (struct seq_file *m, void *p)
1651
1652
stop the seq_file iteration
1653
1654
.. container:: kernelindent
1655
1656
**Parameters**
1657
1658
``struct seq_file *m``
1659
the :c:type:`struct seq_file <seq_file>`
1660
1661
``void *p``
1662
handle
1663
- name: spin_lock
1664
description: mock_tests/kdoc-drop-ctx-lock.c line 265
1665
fname: mock_tests/kdoc-drop-ctx-lock.c
1666
source: |
1667
/**
1668
* spin_lock - spin until the @lock is acquired
1669
* @lock: the spinlock
1670
*/
1671
void spin_lock(spinlock_t *lock)
1672
__acquires(lock) __no_context_analysis
1673
{ }
1674
expected:
1675
- man: |
1676
.TH "spin_lock" 9 "February 2026" "mock_tests" "Kernel API Manual"
1677
.SH NAME
1678
spin_lock \- spin until the @lock is acquired
1679
.SH SYNOPSIS
1680
.B "void" spin_lock
1681
.BI "(spinlock_t *lock " ");"
1682
.SH ARGUMENTS
1683
.IP "lock" 12
1684
the spinlock
1685
.SH "SEE ALSO"
1686
.PP
1687
Kernel file \fBmock_tests/kdoc-drop-ctx-lock.c\fR
1688
rst: |
1689
.. c:function:: void spin_lock (spinlock_t *lock)
1690
1691
spin until the **lock** is acquired
1692
1693
.. container:: kernelindent
1694
1695
**Parameters**
1696
1697
``spinlock_t *lock``
1698
the spinlock
1699
1700