I am working in the PV-Drivers for xen.
I am trying to use a macro that will return a pointer inside a structure defined by a macro, using a macro. For example I create the front ring that will contain the disk read requests with a macro like this: struct blkif_ring * shared = memalign_low(4096,4096); //return 0x000fd630 this above 16bit space SHARED_RING_INIT(shared); So far I have a pointer located at 0x0009a000 Under 32bit the struct is correct and all is working according to plan. But on 16bit operation read on disk I have struct blkfront_info * shared_ring = container_of(op-drive_g.info->shared)); // I get d630 I should get it from the correct segment, but how? RING_GET_REQUEST(shared_ring); //this returns 0xffff and should be something 0xa010 segment SS or something like that
My problem is I do not know which macro to use to set the malloc in a place (segment) I can locate later in 16bit code. And since I am using macros when I try to use MAKE_FLATPTR and GET_SEG they make compilation error.
Sorry for such silly questions.