1 .. SPDX-License-Identifier: GPL-2.0 2 3 The Virtual PCM Test Driver 4 =========================== 5 6 The Virtual PCM Test Driver emulates a generic 7 testing/fuzzing of the userspace ALSA applicat 8 the PCM middle layer. Additionally, it can be 9 problems with PCM devices. 10 11 What can this driver do? 12 ~~~~~~~~~~~~~~~~~~~~~~~~ 13 14 At this moment the driver can do the following 15 * Simulate both capture and playback p 16 * Generate random or pattern-based cap 17 * Inject delays into the playback and 18 * Inject errors during the PCM callbac 19 20 It supports up to 8 substreams and 4 channels. 21 non-interleaved access modes. 22 23 Also, this driver can check the playback strea 24 which is used in the corresponding selftest (a 25 layer data transferring functionality. Additio 26 RESET ioctl, and the selftest covers this PCM 27 28 Configuration 29 ------------- 30 31 The driver has several parameters besides the 32 33 * fill_mode (bool) - Buffer fill mode 34 * inject_delay (int) 35 * inject_hwpars_err (bool) 36 * inject_prepare_err (bool) 37 * inject_trigger_err (bool) 38 39 40 Capture Data Generation 41 ----------------------- 42 43 The driver has two modes of data generation: t 44 means random data generation, the second (1 in 45 data generation. Let's look at the second mode 46 47 First of all, you may want to specify the patt 48 by writing the pattern to the debugfs file. Th 49 for each channel, as well as entries which con 50 51 * /sys/kernel/debug/pcmtest/fill_patte 52 * /sys/kernel/debug/pcmtest/fill_patte 53 54 To set the pattern for the channel 0 you can e 55 56 .. code-block:: bash 57 58 echo -n mycoolpattern > /sys/kernel/de 59 60 Then, after every capture action performed on 61 channel 0 will contain 'mycoolpatternmycoolpat 62 63 The pattern itself can be up to 4096 bytes lon 64 65 Delay injection 66 --------------- 67 68 The driver has 'inject_delay' parameter, which 69 can be used for time delay/speedup simulations 70 it means the delay added between module's inte 71 72 If the 'inject_delay' value is positive, the b 73 negative - faster. You can try it yourself by 74 audiorecording application (like Audacity) and 75 source. 76 77 This parameter can be also used for generating 78 short period of time (with the negative 'injec 79 80 Errors injection 81 ---------------- 82 83 This module can be used for injecting errors i 84 action can help you to figure out how the user 85 circumstances. 86 87 For example, you can make all 'hw_params' PCM 88 writing '1' to the 'inject_hwpars_err' module 89 90 .. code-block:: bash 91 92 echo 1 > /sys/module/snd_pcmtest/param 93 94 Errors can be injected into the following PCM 95 96 * hw_params (EBUSY) 97 * prepare (EINVAL) 98 * trigger (EINVAL) 99 100 Playback test 101 ------------- 102 103 This driver can be also used for the playback 104 write the playback data to the 'pcmtest' PCM d 105 buffer for containing the looped pattern (whic 106 debugfs file for each channel). If the playbac 107 pattern, 'pc_test' debugfs entry is set into ' 108 109 ioctl redefinition test 110 ----------------------- 111 112 The driver redefines the 'reset' ioctl, which 113 this functionality, we can trigger the reset i 114 entry: 115 116 .. code-block:: bash 117 118 cat /sys/kernel/debug/pcmtest/ioctl_te 119 120 If the ioctl is triggered successfully, this f
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.