Annotation of qemu/roms/SLOF/clients/net-snk/include/netdriver_int.h, revision 1.1.1.1

1.1       root        1: /******************************************************************************
                      2:  * Copyright (c) 2004, 2008 IBM Corporation
                      3:  * All rights reserved.
                      4:  * This program and the accompanying materials
                      5:  * are made available under the terms of the BSD License
                      6:  * which accompanies this distribution, and is available at
                      7:  * http://www.opensource.org/licenses/bsd-license.php
                      8:  *
                      9:  * Contributors:
                     10:  *     IBM Corporation - initial implementation
                     11:  *****************************************************************************/
                     12: 
                     13: #ifndef _NETDRIVER_INT_H
                     14: #define _NETDRIVER_INT_H
                     15: #include <stddef.h>
                     16: #include <unistd.h> /* ssize_t */
                     17: #include <fileio.h>
                     18: 
                     19: #if defined(__GNUC__) && !defined(UNUSED)
                     20: # define UNUSED __attribute__((unused))
                     21: #else
                     22: # define UNUSED
                     23: #endif
                     24: 
                     25: typedef struct {
                     26:        unsigned int addr;
                     27:        unsigned int size;
                     28:        int type;
                     29: } bar_t;
                     30: 
                     31: 
                     32: typedef struct {
                     33:        unsigned long long puid;
                     34:        unsigned int bus;
                     35:        unsigned int devfn;
                     36:        unsigned int vendor_id;
                     37:        unsigned int device_id;
                     38:        unsigned int revision_id;
                     39:        unsigned int class_code;
                     40:        bar_t bars[6];
                     41:        unsigned int interrupt_line;
                     42: } pci_config_t;
                     43: 
                     44: typedef struct {
                     45:        unsigned int reg;
                     46:        char         compat[64];
                     47: } vio_config_t;
                     48: 
                     49: #define MOD_TYPE_NETWORK 0
                     50: #define MOD_TYPE_OTHER   1
                     51: 
                     52: typedef int (*mod_init_t)  (void);
                     53: typedef int (*mod_term_t)  (void);
                     54: typedef int (*mod_socket_t)(snk_fileio_t *, int dom, int type, int proto);
                     55: typedef int (*mod_open_t)  (snk_fileio_t *, const char *, int);
                     56: typedef int (*mod_read_t)  (char *, int);
                     57: typedef int (*mod_write_t) (char *, int);
                     58: typedef int (*mod_ioctl_t) (int, void *);
                     59: 
                     60: typedef struct {
                     61:        int version;
                     62:        int type;
                     63:        int running;
                     64:        void *link_addr;
                     65:        mod_init_t   init;
                     66:        mod_term_t   term;
                     67:        mod_socket_t socket;
                     68:        mod_open_t   open;
                     69:        mod_read_t   read;
                     70:        mod_write_t  write;
                     71:        mod_ioctl_t  ioctl;
                     72: 
                     73:        char mac_addr[6];
                     74: } snk_module_t;
                     75: 
                     76: #define MODULES_MAX 10
                     77: extern snk_module_t *snk_modules[MODULES_MAX];
                     78: 
                     79: typedef int (*print_t) (const char *, ...);
                     80: typedef void (*us_delay_t) (unsigned int);
                     81: typedef void (*ms_delay_t) (unsigned int);
                     82: typedef int (*pci_config_read_t) (long long puid, int size,
                     83:                                  int bus, int devfn, int offset);
                     84: typedef int (*pci_config_write_t) (long long puid, int size,
                     85:                                   int bus, int devfn, int offset, int value);
                     86: typedef void *(*malloc_aligned_t) (size_t, int);
                     87: typedef void *(*malloc_t) (size_t);
                     88: typedef void (*free_t)    (void *);
                     89: typedef int (*strcmp_t)   (const char *, const char *);
                     90: typedef int (*snk_call_t) (int, char **);
                     91: typedef unsigned int (*io_read_t) (void *, size_t);
                     92: typedef int (*io_write_t) (void *, unsigned int, size_t);
                     93: typedef unsigned int (*romfs_lookup_t) (const char *name, void **addr);
                     94: typedef void (*translate_addr_t) (unsigned long *);
                     95: 
                     96: typedef int (*k_open_t) (const char *, int);
                     97: typedef int (*k_close_t) (int);
                     98: typedef ssize_t (*k_read_t) (int, void *, size_t);
                     99: typedef ssize_t (*k_write_t) (int, const void *, size_t);
                    100: typedef int (*k_ioctl_t) (int, int, void *);
                    101: 
                    102: typedef void (*modules_remove_t) (int);
                    103: typedef snk_module_t *(*modules_load_t) (int);
                    104: 
                    105: typedef struct {
                    106:        int version;
                    107:        print_t print;
                    108:        us_delay_t us_delay;
                    109:        ms_delay_t ms_delay;
                    110:        pci_config_read_t pci_config_read;
                    111:        pci_config_write_t pci_config_write;
                    112:        malloc_t k_malloc;
                    113:        malloc_aligned_t k_malloc_aligned;
                    114:        free_t k_free;
                    115:        strcmp_t strcmp;
                    116:        snk_call_t snk_call;
                    117:        io_read_t io_read;
                    118:        io_write_t io_write;
                    119:        romfs_lookup_t k_romfs_lookup;
                    120:        translate_addr_t translate_addr;
                    121:        union {
                    122:                pci_config_t pci_conf;
                    123:                vio_config_t vio_conf;
                    124:        };
                    125:        k_open_t k_open;
                    126:        k_close_t k_close;
                    127:        k_read_t k_read;
                    128:        k_write_t k_write;
                    129:        k_ioctl_t k_ioctl;
                    130:        modules_remove_t modules_remove;
                    131:        modules_load_t modules_load;
                    132: } snk_kernel_t;
                    133: 
                    134: /* Entry of module */
                    135: snk_module_t *module_init(snk_kernel_t * snk_kernel_int,
                    136:                           pci_config_t * pciconf);
                    137: 
                    138: 
                    139: /*
                    140:  * Constants for different kinds of IOCTL requests
                    141:  */
                    142: 
                    143: #define SIOCETHTOOL  0x1000
                    144: 
                    145: /*
                    146:  * special structure and constants for IOCTL requests of type ETHTOOL
                    147:  */
                    148: 
                    149: #define ETHTOOL_GMAC         0x03
                    150: #define ETHTOOL_SMAC         0x04
                    151: #define ETHTOOL_VERSION      0x05
                    152: 
                    153: typedef struct {
                    154:        int idx;
                    155:        char address[6];
                    156: } ioctl_ethtool_mac_t;
                    157: 
                    158: typedef struct {
                    159:        unsigned int length;
                    160:        char *text;
                    161: } ioctl_ethtool_version_t;
                    162: 
                    163: 
                    164: /*
                    165:  * default structure and constants for IOCTL requests
                    166:  */
                    167: 
                    168: #define IF_NAME_SIZE 0xFF
                    169: 
                    170: typedef struct {
                    171:        char if_name[IF_NAME_SIZE];
                    172:        int subcmd;
                    173:        union {
                    174:                ioctl_ethtool_mac_t mac;
                    175:                ioctl_ethtool_version_t version;
                    176:        } data;
                    177: } ioctl_net_data_t;
                    178: 
                    179: /* paflof */
                    180: enum {
                    181:        PAFLOF_GDEPTH,
                    182:        PAFLOF_GIO_BEHAVIOR,
                    183:        PAFLOF_GSTATUS,
                    184:        PAFLOF_POP,
                    185:        PAFLOF_PUSH,
                    186: };
                    187: /*  - clint */
                    188: enum {
                    189:        CLINT_EXECUTE
                    190: };
                    191: 
                    192: #endif                         /* _NETDRIVER_INT_H */

unix.superglobalmegacorp.com

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