Annotation of Gnu-Mach/xen/public/io/pciif.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * PCI Backend/Frontend Common Data Structures & Macros
        !             3:  *
        !             4:  * Permission is hereby granted, free of charge, to any person obtaining a copy
        !             5:  * of this software and associated documentation files (the "Software"), to
        !             6:  * deal in the Software without restriction, including without limitation the
        !             7:  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
        !             8:  * sell copies of the Software, and to permit persons to whom the Software is
        !             9:  * furnished to do so, subject to the following conditions:
        !            10:  *
        !            11:  * The above copyright notice and this permission notice shall be included in
        !            12:  * all copies or substantial portions of the Software.
        !            13:  *
        !            14:  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        !            15:  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        !            17:  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        !            18:  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
        !            19:  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
        !            20:  * DEALINGS IN THE SOFTWARE.
        !            21:  *
        !            22:  *   Author: Ryan Wilson <[email protected]>
        !            23:  */
        !            24: #ifndef __XEN_PCI_COMMON_H__
        !            25: #define __XEN_PCI_COMMON_H__
        !            26: 
        !            27: /* Be sure to bump this number if you change this file */
        !            28: #define XEN_PCI_MAGIC "7"
        !            29: 
        !            30: /* xen_pci_sharedinfo flags */
        !            31: #define _XEN_PCIF_active     (0)
        !            32: #define XEN_PCIF_active      (1<<_XEN_PCI_active)
        !            33: 
        !            34: /* xen_pci_op commands */
        !            35: #define XEN_PCI_OP_conf_read    (0)
        !            36: #define XEN_PCI_OP_conf_write   (1)
        !            37: #define XEN_PCI_OP_enable_msi   (2)
        !            38: #define XEN_PCI_OP_disable_msi  (3)
        !            39: #define XEN_PCI_OP_enable_msix  (4)
        !            40: #define XEN_PCI_OP_disable_msix (5)
        !            41: 
        !            42: /* xen_pci_op error numbers */
        !            43: #define XEN_PCI_ERR_success          (0)
        !            44: #define XEN_PCI_ERR_dev_not_found   (-1)
        !            45: #define XEN_PCI_ERR_invalid_offset  (-2)
        !            46: #define XEN_PCI_ERR_access_denied   (-3)
        !            47: #define XEN_PCI_ERR_not_implemented (-4)
        !            48: /* XEN_PCI_ERR_op_failed - backend failed to complete the operation */
        !            49: #define XEN_PCI_ERR_op_failed       (-5)
        !            50: 
        !            51: /*
        !            52:  * it should be PAGE_SIZE-sizeof(struct xen_pci_op))/sizeof(struct msix_entry))
        !            53:  * Should not exceed 128
        !            54:  */
        !            55: #define SH_INFO_MAX_VEC     128
        !            56: 
        !            57: struct xen_msix_entry {
        !            58:     uint16_t vector;
        !            59:     uint16_t entry;
        !            60: };
        !            61: struct xen_pci_op {
        !            62:     /* IN: what action to perform: XEN_PCI_OP_* */
        !            63:     uint32_t cmd;
        !            64: 
        !            65:     /* OUT: will contain an error number (if any) from errno.h */
        !            66:     int32_t err;
        !            67: 
        !            68:     /* IN: which device to touch */
        !            69:     uint32_t domain; /* PCI Domain/Segment */
        !            70:     uint32_t bus;
        !            71:     uint32_t devfn;
        !            72: 
        !            73:     /* IN: which configuration registers to touch */
        !            74:     int32_t offset;
        !            75:     int32_t size;
        !            76: 
        !            77:     /* IN/OUT: Contains the result after a READ or the value to WRITE */
        !            78:     uint32_t value;
        !            79:     /* IN: Contains extra infor for this operation */
        !            80:     uint32_t info;
        !            81:     /*IN:  param for msi-x */
        !            82:     struct xen_msix_entry msix_entries[SH_INFO_MAX_VEC];
        !            83: };
        !            84: 
        !            85: struct xen_pci_sharedinfo {
        !            86:     /* flags - XEN_PCIF_* */
        !            87:     uint32_t flags;
        !            88:     struct xen_pci_op op;
        !            89: };
        !            90: 
        !            91: #endif /* __XEN_PCI_COMMON_H__ */
        !            92: 
        !            93: /*
        !            94:  * Local variables:
        !            95:  * mode: C
        !            96:  * c-set-style: "BSD"
        !            97:  * c-basic-offset: 4
        !            98:  * tab-width: 4
        !            99:  * indent-tabs-mode: nil
        !           100:  * End:
        !           101:  */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.