AppleSamplePCIShared.h   [plain text]



// Have to be careful regarding the alignment of structures since
// this file is shared between 32 bit kernel code and 32 or 64 bit
// user level code. 
// See http://developer.apple.com/documentation/Darwin/Conceptual/64bitPorting/index.html

// Structures in this file are aligned naturally by ordering any 64 bit quantities first.
// #pragma pack could also be used to force alignment

enum {
    kAppleSampleMethod1 = 0,
    kAppleSampleMethod2 = 1,
    kAppleSampleMethod3 = 2,
    kAppleSampleNumMethods
};

struct AppleSampleStructForMethod2 {
    mach_vm_address_t   data_pointer;
    mach_vm_size_t      data_length;
    uint32_t            parameter1;
    uint32_t            __pad;
};
#ifndef __cplusplus
typedef struct AppleSampleStructForMethod2 AppleSampleStructForMethod2;
#endif

struct AppleSampleResultsForMethod2 {
    uint64_t            results1;
};
#ifndef __cplusplus
typedef struct AppleSampleResultsForMethod2 AppleSampleResultsForMethod2;
#endif


#define kAppleSamplePCIClassName        "AppleSamplePCI"

// types for IOServiceOpen()
enum {
    kAppleSamplePCIConnectType = 23
};

// types for IOConnectMapMemory()
enum {
    kAppleSamplePCIMemoryType1 = 100,
    kAppleSamplePCIMemoryType2 = 101,
};

// memory structure to be shared between the kernel user client object and client.
struct AppleSampleSharedMemory {
    uint32_t    field1;
    uint32_t    field2;
    uint32_t    field3;
    char        string[100];
};
#ifndef __cplusplus
typedef struct AppleSampleSharedMemory AppleSampleSharedMemory;
#endif