Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
en:docs:fapi:dosallochuge [2021/08/14 10:00] – prokushev | en:docs:fapi:dosallochuge [2021/09/14 14:25] – prokushev | ||
---|---|---|---|
Line 7: | Line 7: | ||
===== Syntax ===== | ===== Syntax ===== | ||
- | | + | <code c> |
+ | DosAllocHuge (NumSeg, Size, Selector, MaxNumSeg, AllocFlags) | ||
+ | </ | ||
===== Parameters ===== | ===== Parameters ===== | ||
- | NumSeg (USHORT) - input : Number of 65536-byte segments to be allocated. | + | |
- | Size (USHORT) - input : Number of bytes to be allocated in the last (non-65536-byte) segment. A value of zero indicates none. | + | |
- | Selector (PSEL) - output : Address where the selector of the first segment allocated is returned. | + | |
- | MaxNumSeg (USHORT) - input : Maximum number of 65536-byte segments this object occupies as a result of any subsequent [[DosReallocHuge]]. If MaxNumSeg is 0, OS/2 assumes this segment will never be increased by DosReallocHuge beyond its original size, though it may be decreased. This value is ignored in the DOS mode. | + | |
- | AllocFlags (USHORT) - input : Bit indicators describing the characteristics of the segment allocated. The bits that can be set and their meanings are: | + | |
^ Bit ^ Description ^ | ^ Bit ^ Description ^ | ||
- | | 15-4 | | + | | 15-4 | Reserved and must be set to zero. | |
- | | 3 | If segment is shared, it can be decreased in size by [[DosReallocHuge]]. | | + | | 3 | If segment is shared, it can be decreased in size by [[DosReallocHuge]]. | |
- | | 2 | Segment may be discarded by the system in low memory situations. | | + | | 2 | Segment may be discarded by the system in low memory situations. | |
- | | 1 | Segment is shareable through [[DosGetSeg]]. | | + | | 1 | Segment is shareable through [[DosGetSeg]]. | |
- | | 0 | Segment is shareable through [[DosGiveSeg]]. | | + | | 0 | Segment is shareable through [[DosGiveSeg]]. | |
===== Return Code ===== | ===== Return Code ===== | ||
Line 40: | Line 43: | ||
Each segment of a huge memory allocation has a unique selector. To determine the remaining selectors of a huge memory allocation, issue [[DosGetHugeShift]], | Each segment of a huge memory allocation has a unique selector. To determine the remaining selectors of a huge memory allocation, issue [[DosGetHugeShift]], | ||
- | * Assume DosAllocHuge is issued with NumSeg equal to 3, and that the number 63 is returned for the selector of the first segment. | + | |
- | * If DosGetHugeShift returns a shift count of 4, shifting the value " | + | * If DosGetHugeShift returns a shift count of 4, shifting the value " |
- | * Adding this increment to selector number 63 produces 79 for the second selector. Adding the same increment to selector number 79 yields 95 for the third selector. | + | * Adding this increment to selector number 63 produces 79 for the second selector. Adding the same increment to selector number 79 yields 95 for the third selector. |
Like single segment memory allocated with DosAllocSeg, | Like single segment memory allocated with DosAllocSeg, | ||
Line 62: | Line 65: | ||
=== C Binding=== | === C Binding=== | ||
+ | <code c> | ||
#define INCL_DOSMEMMGR | #define INCL_DOSMEMMGR | ||
| | ||
Line 74: | Line 78: | ||
| | ||
USHORT | USHORT | ||
+ | </ | ||
=== Example === | === Example === | ||
Line 80: | Line 84: | ||
This example requests a block of memory with 4 segments, the last segment having 1,040 bytes. The block of memory will never be larger than 8 segments. The memory can be shared with DosGiveSeg API calls. The system can discard the memory if it needs too. | This example requests a block of memory with 4 segments, the last segment having 1,040 bytes. The block of memory will never be larger than 8 segments. The memory can be shared with DosGiveSeg API calls. The system can discard the memory if it needs too. | ||
+ | <code c> | ||
#define INCL_DOSMEMMGR | #define INCL_DOSMEMMGR | ||
| | ||
Line 95: | Line 100: | ||
MAXIMUM_SEG_SIZE, | MAXIMUM_SEG_SIZE, | ||
ALLOC_FLAG); | ALLOC_FLAG); | ||
+ | </ | ||
=== ASM Binding === | === ASM Binding === | ||
+ | <code asm> | ||
EXTRN DosAllocHuge: | EXTRN DosAllocHuge: | ||
INCL_DOSMEMMGR | INCL_DOSMEMMGR | ||
Line 109: | Line 115: | ||
| | ||
Returns WORD | Returns WORD | ||
+ | </ | ||
====== Note ====== | ====== Note ====== | ||