PILLAY.KDA@EXETER.AC.UK (02/07/90)
How!
Can anyone tell me how to obtain the physical 20-bit address for data
allocated using "calloc" or "malloc"?
Under TurboC I have the following:
unsigned char *ptr
..
ptr = (char *) calloc(num, sizeof(ptr))
off = ((unsigned) (ptr))
seg = ((unsigned) ((unsigned long) (ptr) >> 16))
gives me a physical address " seg:off ".
Under MINIX, ptr would only be 2 bytes long. I looked at the floppy.c
driver and that uses "umap(...)" from kernel/system.c which in turn
needs to extract info from a user process etc..
I am programming the DMA controller on the PC and all I want to do
is allocated some memory, using calloc, and program the controller
with the Physical 20 bit address of where ptr points.
Thanks.