Tysphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget'/translations/zh_CN/arch/s390/monreadermodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/arch/s390/monreadermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/arch/s390/monreadermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/arch/s390/monreadermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/arch/s390/monreadermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/arch/s390/monreadermodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h1Linux API for read access to z/VM Monitor Recordsh]h1Linux API for read access to z/VM Monitor Records}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhA/var/lib/git/docbuild/linux/Documentation/arch/s390/monreader.rsthKubh paragraph)}(hDate : 2004-Nov-26h]hDate : 2004-Nov-26}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h-Author: Gerald Schaefer (geraldsc@de.ibm.com)h](hAuthor: Gerald Schaefer (}(hhhhhNhNubh reference)}(hgeraldsc@de.ibm.comh]hgeraldsc@de.ibm.com}(hhhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:geraldsc@de.ibm.comuh1hhhubh)}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h Descriptionh]h Description}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh)}(hThis item delivers a new Linux API in the form of a misc char device that is usable from user space and allows read access to the z/VM Monitor Records collected by the `*MONITOR` System Service of z/VM.h](hThis item delivers a new Linux API in the form of a misc char device that is usable from user space and allows read access to the z/VM Monitor Records collected by the }(hhhhhNhNubhtitle_reference)}(h `*MONITOR`h]h*MONITOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhubh System Service of z/VM.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h] descriptionah ]h"] descriptionah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hUser Requirementsh]hUser Requirements}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hhhhhKubh)}(hXThe z/VM guest on which you want to access this API needs to be configured in order to allow IUCV connections to the `*MONITOR` service, i.e. it needs the IUCV `*MONITOR` statement in its user entry. If the monitor DCSS to be used is restricted (likely), you also need the NAMESAVE statement. This item will use the IUCV device driver to access the z/VM services, so you need a kernel with IUCV support. You also need z/VM version 4.4 or 5.1.h](huThe z/VM guest on which you want to access this API needs to be configured in order to allow IUCV connections to the }(hj7hhhNhNubj)}(h `*MONITOR`h]h*MONITOR}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubh! service, i.e. it needs the IUCV }(hj7hhhNhNubj)}(h `*MONITOR`h]h*MONITOR}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubhX statement in its user entry. If the monitor DCSS to be used is restricted (likely), you also need the NAMESAVE statement. This item will use the IUCV device driver to access the z/VM services, so you need a kernel with IUCV support. You also need z/VM version 4.4 or 5.1.}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj&hhubh)}(hX)There are two options for being able to load the monitor DCSS (examples assume that the monitor DCSS begins at 144 MB and ends at 152 MB). You can query the location of the monitor DCSS with the Class E privileged CP command Q NSS MAP (the values BEGPAG and ENDPAG are given in units of 4K pages).h]hX)There are two options for being able to load the monitor DCSS (examples assume that the monitor DCSS begins at 144 MB and ends at 152 MB). You can query the location of the monitor DCSS with the Class E privileged CP command Q NSS MAP (the values BEGPAG and ENDPAG are given in units of 4K pages).}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj&hhubh)}(hSee also "CP Command and Utility Reference" (SC24-6081-00) for more information on the DEF STOR and Q NSS MAP commands, as well as "Saved Segments Planning and Administration" (SC24-6116-00) for more information on DCSSes.h]hSee also “CP Command and Utility Reference” (SC24-6081-00) for more information on the DEF STOR and Q NSS MAP commands, as well as “Saved Segments Planning and Administration” (SC24-6116-00) for more information on DCSSes.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hj&hhubh)}(hhh](h)}(h 1st option:h]h 1st option:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK&ubh)}(hYou can use the CP command DEF STOR CONFIG to define a "memory hole" in your guest virtual storage around the address range of the DCSS.h]hYou can use the CP command DEF STOR CONFIG to define a “memory hole” in your guest virtual storage around the address range of the DCSS.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjhhubh)}(h)Example: DEF STOR CONFIG 0.140M 200M.200Mh]h)Example: DEF STOR CONFIG 0.140M 200M.200M}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjhhubh)}(hX This defines two blocks of storage, the first is 140MB in size an begins at address 0MB, the second is 200MB in size and begins at address 200MB, resulting in a total storage of 340MB. Note that the first block should always start at 0 and be at least 64MB in size.h]hX This defines two blocks of storage, the first is 140MB in size an begins at address 0MB, the second is 200MB in size and begins at address 200MB, resulting in a total storage of 340MB. Note that the first block should always start at 0 and be at least 64MB in size.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hjhhubeh}(h] st-optionah ]h"] 1st option:ah$]h&]uh1hhj&hhhhhK&ubh)}(hhh](h)}(h 2nd option:h]h 2nd option:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK2ubh)}(hYour guest virtual storage has to end below the starting address of the DCSS and you have to specify the "mem=" kernel parameter in your parmfile with a value greater than the ending address of the DCSS.h]hYour guest virtual storage has to end below the starting address of the DCSS and you have to specify the “mem=” kernel parameter in your parmfile with a value greater than the ending address of the DCSS.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjhhubh)}(h Example::h]hExample:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjhhubh literal_block)}(h DEF STOR 140Mh]h DEF STOR 140M}hjsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1jhhhK9hjhhubh)}(hbThis defines 140MB storage size for your guest, the parameter "mem=160M" is added to the parmfile.h]hfThis defines 140MB storage size for your guest, the parameter “mem=160M” is added to the parmfile.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjhhubeh}(h] nd-optionah ]h"] 2nd option:ah$]h&]uh1hhj&hhhhhK2ubeh}(h]user-requirementsah ]h"]user requirementsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hUser Interfaceh]hUser Interface}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hhhhhK@ubh)}(hXThe char device is implemented as a kernel module named "monreader", which can be loaded via the modprobe command, or it can be compiled into the kernel instead. There is one optional module (or kernel) parameter, "mondcss", to specify the name of the monitor DCSS. If the module is compiled into the kernel, the kernel parameter "monreader.mondcss=" can be specified in the parmfile.h]hXThe char device is implemented as a kernel module named “monreader”, which can be loaded via the modprobe command, or it can be compiled into the kernel instead. There is one optional module (or kernel) parameter, “mondcss”, to specify the name of the monitor DCSS. If the module is compiled into the kernel, the kernel parameter “monreader.mondcss=” can be specified in the parmfile.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhj%hhubh)}(hX=The default name for the DCSS is "MONDCSS" if none is specified. In case that there are other users already connected to the `*MONITOR` service (e.g. Performance Toolkit), the monitor DCSS is already defined and you have to use the same DCSS. The CP command Q MONITOR (Class E privileged) shows the name of the monitor DCSS, if already defined, and the users connected to the `*MONITOR` service. Refer to the "z/VM Performance" book (SC24-6109-00) on how to create a monitor DCSS if your z/VM doesn't have one already, you need Class E privileges to define and save a DCSS.h](hThe default name for the DCSS is “MONDCSS” if none is specified. In case that there are other users already connected to the }(hjDhhhNhNubj)}(h `*MONITOR`h]h*MONITOR}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubh service (e.g. Performance Toolkit), the monitor DCSS is already defined and you have to use the same DCSS. The CP command Q MONITOR (Class E privileged) shows the name of the monitor DCSS, if already defined, and the users connected to the }(hjDhhhNhNubj)}(h `*MONITOR`h]h*MONITOR}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubh service. Refer to the “z/VM Performance” book (SC24-6109-00) on how to create a monitor DCSS if your z/VM doesn’t have one already, you need Class E privileges to define and save a DCSS.}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKHhj%hhubh)}(hhh](h)}(hExample:h]hExample:}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhhhhhKSubj)}(h!modprobe monreader mondcss=MYDCSSh]h!modprobe monreader mondcss=MYDCSS}hjsbah}(h]h ]h"]h$]h&]jjuh1jhhhKWhjvhhubh)}(h9This loads the module and sets the DCSS name to "MYDCSS".h]h=This loads the module and sets the DCSS name to “MYDCSS”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjvhhubeh}(h]exampleah ]h"]h$]example:ah&]uh1hhj%hhhhhKS referencedKubh)}(hhh](h)}(hNOTE:h]hNOTE:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK\ubh)}(hThis API provides no interface to control the `*MONITOR` service, e.g. specify which data should be collected. This can be done by the CP command MONITOR (Class E privileged), see "CP Command and Utility Reference".h](h.This API provides no interface to control the }(hjhhhNhNubj)}(h `*MONITOR`h]h*MONITOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh service, e.g. specify which data should be collected. This can be done by the CP command MONITOR (Class E privileged), see “CP Command and Utility Reference”.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK]hjhhubeh}(h]noteah ]h"]h$]note:ah&]uh1hhj%hhhhhK\jKubh)}(hhh](h)}(hDevice nodes with udev:h]hDevice nodes with udev:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKbubh)}(hoAfter loading the module, a char device will be created along with the device node //monreader.h]hoAfter loading the module, a char device will be created along with the device node //monreader.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchjhhubeh}(h]device-nodes-with-udevah ]h"]device nodes with udev:ah$]h&]uh1hhj%hhhhhKbubh)}(hhh](h)}(hDevice nodes without udev:h]hDevice nodes without udev:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKgubh)}(hXIf your distribution does not support udev, a device node will not be created automatically and you have to create it manually after loading the module. Therefore you need to know the major and minor numbers of the device. These numbers can be found in /sys/class/misc/monreader/dev.h]hXIf your distribution does not support udev, a device node will not be created automatically and you have to create it manually after loading the module. Therefore you need to know the major and minor numbers of the device. These numbers can be found in /sys/class/misc/monreader/dev.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhj hhubh)}(hTyping cat /sys/class/misc/monreader/dev will give an output of the form :. The device node can be created via the mknod command, enter mknod c , where is the name of the device node to be created.h]hTyping cat /sys/class/misc/monreader/dev will give an output of the form :. The device node can be created via the mknod command, enter mknod c , where is the name of the device node to be created.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhj hhubeh}(h]device-nodes-without-udevah ]h"]device nodes without udev:ah$]h&]uh1hhj%hhhhhKgubh)}(hhh](h)}(hExample:h]hExample:}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhhhhhKsubj)}(h]# modprobe monreader # cat /sys/class/misc/monreader/dev 10:63 # mknod /dev/monreader c 10 63h]h]# modprobe monreader # cat /sys/class/misc/monreader/dev 10:63 # mknod /dev/monreader c 10 63}hjRsbah}(h]h ]h"]h$]h&]jjuh1jhhhKwhjAhhubh)}(hXThis loads the module with the default monitor DCSS (MONDCSS) and creates a device node.h]hXThis loads the module with the default monitor DCSS (MONDCSS) and creates a device node.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK|hjAhhubeh}(h]id1ah ]h"]h$]jah&]uh1hhj%hhhhhKsjKubh)}(hhh](h)}(hFile operations:h]hFile operations:}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhhhhhKubh)}(hThe following file operations are supported: open, release, read, poll. There are two alternative methods for reading: either non-blocking read in conjunction with polling, or blocking read without polling. IOCTLs are not supported.h]hThe following file operations are supported: open, release, read, poll. There are two alternative methods for reading: either non-blocking read in conjunction with polling, or blocking read without polling. IOCTLs are not supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjuhhubeh}(h]file-operationsah ]h"]file operations:ah$]h&]uh1hhj%hhhhhKubh)}(hhh](h)}(hRead:h]hRead:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hXReading from the device provides a 12 Byte monitor control element (MCE), followed by a set of one or more contiguous monitor records (similar to the output of the CMS utility MONWRITE without the 4K control blocks). The MCE contains information on the type of the following record set (sample/event data), the monitor domains contained within it and the start and end address of the record set in the monitor DCSS. The start and end address can be used to determine the size of the record set, the end address is the address of the last byte of data. The start address is needed to handle "end-of-frame" records correctly (domain 1, record 13), i.e. it can be used to determine the record start offset relative to a 4K page (frame) boundary.h]hXReading from the device provides a 12 Byte monitor control element (MCE), followed by a set of one or more contiguous monitor records (similar to the output of the CMS utility MONWRITE without the 4K control blocks). The MCE contains information on the type of the following record set (sample/event data), the monitor domains contained within it and the start and end address of the record set in the monitor DCSS. The start and end address can be used to determine the size of the record set, the end address is the address of the last byte of data. The start address is needed to handle “end-of-frame” records correctly (domain 1, record 13), i.e. it can be used to determine the record start offset relative to a 4K page (frame) boundary.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hSee "Appendix A: `*MONITOR`" in the "z/VM Performance" document for a description of the monitor control element layout. The layout of the monitor records can be found here (z/VM 5.1): https://www.vm.ibm.com/pubs/mon510/index.htmlh](hSee “Appendix A: }(hjhhhNhNubj)}(h `*MONITOR`h]h*MONITOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh” in the “z/VM Performance” document for a description of the monitor control element layout. The layout of the monitor records can be found here (z/VM 5.1): }(hjhhhNhNubh)}(h-https://www.vm.ibm.com/pubs/mon510/index.htmlh]h-https://www.vm.ibm.com/pubs/mon510/index.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hNThe layout of the data stream provided by the monreader device is as follows::h]hMThe layout of the data stream provided by the monreader device is as follows:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h... <0 byte read> \ | ... |- data set | / <0 byte read> ...h]h... <0 byte read> \ | ... |- data set | / <0 byte read> ...}hjsbah}(h]h ]h"]h$]h&]jjuh1jhhhKhjhhubh)}(hXThere may be more than one combination of MCE and corresponding record set within one data set and the end of each data set is indicated by a successful read with a return value of 0 (0 byte read). Any received data must be considered invalid until a complete set was read successfully, including the closing 0 byte read. Therefore you should always read the complete set into a buffer before processing the data.h]hXThere may be more than one combination of MCE and corresponding record set within one data set and the end of each data set is indicated by a successful read with a return value of 0 (0 byte read). Any received data must be considered invalid until a complete set was read successfully, including the closing 0 byte read. Therefore you should always read the complete set into a buffer before processing the data.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX^The maximum size of a data set can be as large as the size of the monitor DCSS, so design the buffer adequately or use dynamic memory allocation. The size of the monitor DCSS will be printed into syslog after loading the module. You can also use the (Class E privileged) CP command Q NSS MAP to list all available segments and information about them.h]hX^The maximum size of a data set can be as large as the size of the monitor DCSS, so design the buffer adequately or use dynamic memory allocation. The size of the monitor DCSS will be printed into syslog after loading the module. You can also use the (Class E privileged) CP command Q NSS MAP to list all available segments and information about them.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hAs with most char devices, error conditions are indicated by returning a negative value for the number of bytes read. In this case, the errno variable indicates the error condition:h]hAs with most char devices, error conditions are indicated by returning a negative value for the number of bytes read. In this case, the errno variable indicates the error condition:}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubhdefinition_list)}(hhh](hdefinition_list_item)}(hEIO: reply failed, read data is invalid and the application should discard the data read since the last successful read with 0 size.h](hterm)}(hEIO:h]hEIO:}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j;hhhKhj7ubh definition)}(hhh]h)}(hreply failed, read data is invalid and the application should discard the data read since the last successful read with 0 size.h]hreply failed, read data is invalid and the application should discard the data read since the last successful read with 0 size.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjMubah}(h]h ]h"]h$]h&]uh1jKhj7ubeh}(h]h ]h"]h$]h&]uh1j5hhhKhj2ubj6)}(hEFAULT: copy_to_user failed, read data is invalid and the application should discard the data read since the last successful read with 0 size.h](j<)}(hEFAULT:h]hEFAULT:}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j;hhhKhjjubjL)}(hhh]h)}(hcopy_to_user failed, read data is invalid and the application should discard the data read since the last successful read with 0 size.h]hcopy_to_user failed, read data is invalid and the application should discard the data read since the last successful read with 0 size.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj|ubah}(h]h ]h"]h$]h&]uh1jKhjjubeh}(h]h ]h"]h$]h&]uh1j5hhhKhj2hhubj6)}(hEAGAIN: occurs on a non-blocking read if there is no data available at the moment. There is no data missing or corrupted, just try again or rather use polling for non-blocking reads.h](j<)}(hEAGAIN:h]hEAGAIN:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j;hhhKhjubjL)}(hhh]h)}(hoccurs on a non-blocking read if there is no data available at the moment. There is no data missing or corrupted, just try again or rather use polling for non-blocking reads.h]hoccurs on a non-blocking read if there is no data available at the moment. There is no data missing or corrupted, just try again or rather use polling for non-blocking reads.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jKhjubeh}(h]h ]h"]h$]h&]uh1j5hhhKhj2hhubj6)}(hEOVERFLOW: message limit reached, the data read since the last successful read with 0 size is valid but subsequent records may be missing. h](j<)}(h EOVERFLOW:h]h EOVERFLOW:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j;hhhKhjubjL)}(hhh]h)}(hmessage limit reached, the data read since the last successful read with 0 size is valid but subsequent records may be missing.h]hmessage limit reached, the data read since the last successful read with 0 size is valid but subsequent records may be missing.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jKhjubeh}(h]h ]h"]h$]h&]uh1j5hhhKhj2hhubeh}(h]h ]h"]h$]h&]uh1j0hjhhhhhNubh)}(hIn the last case (EOVERFLOW) there may be missing data, in the first two cases (EIO, EFAULT) there will be missing data. It's up to the application if it will continue reading subsequent data or rather exit.h]hIn the last case (EOVERFLOW) there may be missing data, in the first two cases (EIO, EFAULT) there will be missing data. It’s up to the application if it will continue reading subsequent data or rather exit.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]readah ]h"]read:ah$]h&]uh1hhj%hhhhhKubh)}(hhh](h)}(hOpen:h]hOpen:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hXOnly one user is allowed to open the char device. If it is already in use, the open function will fail (return a negative value) and set errno to EBUSY. The open function may also fail if an IUCV connection to the `*MONITOR` service cannot be established. In this case errno will be set to EIO and an error message with an IPUSER SEVER code will be printed into syslog. The IPUSER SEVER codes are described in the "z/VM Performance" book, Appendix A.h](hOnly one user is allowed to open the char device. If it is already in use, the open function will fail (return a negative value) and set errno to EBUSY. The open function may also fail if an IUCV connection to the }(hj$hhhNhNubj)}(h `*MONITOR`h]h*MONITOR}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubh service cannot be established. In this case errno will be set to EIO and an error message with an IPUSER SEVER code will be printed into syslog. The IPUSER SEVER codes are described in the “z/VM Performance” book, Appendix A.}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]openah ]h"]open:ah$]h&]uh1hhj%hhhhhKubh)}(hhh](h)}(hNOTE:h]hNOTE:}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhhhhhKubh)}(hAs soon as the device is opened, incoming messages will be accepted and they will account for the message limit, i.e. opening the device without reading from it will provoke the "message limit reached" error (EOVERFLOW error code) eventually.h]hAs soon as the device is opened, incoming messages will be accepted and they will account for the message limit, i.e. opening the device without reading from it will provoke the “message limit reached” error (EOVERFLOW error code) eventually.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjLhhubeh}(h]id2ah ]h"]h$]jah&]uh1hhj%hhhhhKjKubeh}(h]user-interfaceah ]h"]user interfaceah$]h&]uh1hhhhhhhhK@ubeh}(h]1linux-api-for-read-access-to-z-vm-monitor-recordsah ]h"]1linux api for read access to z/vm monitor recordsah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jj|j#j j"jjjjjjwjtexample:Nnote:Nj jj>j;jjjj jIjFu nametypes}(jj#j"jjjwjjj j>jjjIuh}(j|hj hjj&jjjjjtj%jjvjjjjj;j jpjAjjuj jjFjjmjLu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages](hsystem_message)}(hhh]h)}(h+Duplicate implicit target name: "example:".h]h/Duplicate implicit target name: “example:”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]jpalevelKtypeINFOsourcehlineKsuh1j hjAhhhhhKsubj )}(hhh]h)}(h(Duplicate implicit target name: "note:".h]h,Duplicate implicit target name: “note:”.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'ubah}(h]h ]h"]h$]h&]jmalevelKtypej$sourcehlineKuh1j hjLhhhhhKubetransform_messages] transformerN include_log] decorationNhhub.