1 /*---------------------------------------------------------------------------*
2 Project: TwlSDK - OS - include
3 File: alloc.h
4
5 Copyright 2003-2009 Nintendo. All rights reserved.
6
7 These coded instructions, statements, and computer programs contain
8 proprietary information of Nintendo of America Inc. and/or Nintendo
9 Company Ltd., and are protected by Federal copyright law. They may
10 not be disclosed to third parties or copied or duplicated in any form,
11 in whole or in part, without the prior written consent of Nintendo.
12
13 $Date:: 2009-06-04#$
14 $Rev: 10698 $
15 $Author: okubata_ryoma $
16 *---------------------------------------------------------------------------*/
17
18 #ifndef NITRO_OS_ALLOC_H_
19 #define NITRO_OS_ALLOC_H_
20
21 #include <nitro/misc.h>
22 #include <nitro/types.h>
23 #include <nitro/os/common/arena.h>
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 //----------------------------------------------------------------
30 // type definition
31
32 typedef int OSHeapHandle;
33 typedef void (*OSAllocVisitor) (void *obj, u32 size);
34
35 #define OS_CURRENT_HEAP_HANDLE ((OSHeapHandle)-1)
36
37 //================================================================================
38 /*---------------------------------------------------------------------------*
39 Name: OS_InitAlloc
40
41 Description: Initializes the arena in which all heaps will reside.
42 Reserves some small amount of memory for array of heap
43 descriptors.
44
45 Arguments: id : arena ID
46 arenaStart : beginning addr of arena
47 arenaEnd : ending addr of arena
48 maxHeaps : Maximum number of active heaps that will be
49 : used in lifetime of program
50
51 Returns: start of real arena, aligned with 32 bytes boundaries, after
52 heap array has been allocated
53 *---------------------------------------------------------------------------*/
54 extern void *OS_InitAlloc(OSArenaId id, void *arenaStart, void *arenaEnd, int maxHeaps);
55
56 /*---------------------------------------------------------------------------*
57 Name: OS_ClearAlloc
58
59 Description: Clear heap pointer system remember.
60 After calling this, you can call OS_InitAlloc() again.
61
62 Arguments: id : arena ID
63
64 Returns: None
65 *---------------------------------------------------------------------------*/
66 extern void OS_ClearAlloc(OSArenaId id);
67
68 /*---------------------------------------------------------------------------*
69 Name: OS_CreateHeap
70
71 Description: Reserves area of memory from /start/ to /end/ for use as a
72 heap. Initializes heap descriptor and free list.
73 Will consume one entry in heap array.
74
75 Arguments: id : arena ID
76 start : starting addr of heap
77 end : ending addr of heap
78
79 Returns: If the function succeeds, it returns a new handle to heap
80 for use in OS_AllocFromHeap(), OS_FreeToHeap(), etc.
81 If the function fails, the return value is -1.
82 *---------------------------------------------------------------------------*/
83 extern OSHeapHandle OS_CreateHeap(OSArenaId id, void *start, void *end);
84
85 /*---------------------------------------------------------------------------*
86 Name: OS_CreateExtraHeap
87
88 Description: Create extra heap using the parameter area of TWL ROM.
89 So Cannot be available on TWL mode.
90 Available only on NITRO of HYBRID.
91
92 Arguments: id : arena ID
93
94 Returns: -1 ... Failed.
95 0< ... Success. Value is heap handle.
96 *---------------------------------------------------------------------------*/
97 #if defined(SDK_TWL) && !defined(SDK_TWLLTD)
98 extern OSHeapHandle OS_CreateExtraHeap(OSArenaId id);
99 #endif
100
101 /*---------------------------------------------------------------------------*
102 Name: OS_DestroyHeap
103
104 Description: Frees up the descriptor for the /heap/. Subsequent
105 allocation requests from this heap will fail unless another
106 heap is created with the same handle.
107
108 Arguments: id : arena ID
109 heap : handle to a live heap, previously created with OS_CreateHeap().
110
111 Returns: None.
112 *---------------------------------------------------------------------------*/
113 extern void OS_DestroyHeap(OSArenaId id, OSHeapHandle heap);
114
115 /*---------------------------------------------------------------------------*
116 Name: OS_AddToHeap
117
118 Description: Adds an arbitrary block of memory to /heap/. Used to free
119 blocks previously allocated with OS_AllocFixed(), or to
120 create non-contiguous heaps.
121
122 Arguments: id : arena ID
123 heap : handle to live heap, previously created with OS_CreateHeap().
124 start : starting addr of block to add to /heap/
125 end : ending addr of block to add to /heap/
126
127 Returns: None.
128 *---------------------------------------------------------------------------*/
129 extern void OS_AddToHeap(OSArenaId id, OSHeapHandle heap, void *start, void *end);
130
131 /*---------------------------------------------------------------------------*
132 Name: OS_AddExtraAreaToHeap
133
134 Description: Adds extra area (top 16KB of main memory ) to /heap/. Used to
135 free blocks previously allocated with OS_AllocFixed(), or to
136 create non-contiguous heaps.
137
138 Arguments: id : arena ID
139 heap : handle to live heap, previously created with OS_CreateHeap().
140
141 Returns: None.
142 *---------------------------------------------------------------------------*/
143 #if defined(SDK_TWL) && !defined(SDK_TWLLTD)
144 void OS_AddExtraAreaToHeap(OSArenaId id, OSHeapHandle heap);
145 #endif
146
147 /*---------------------------------------------------------------------------*
148 Name: OS_SetCurrentHeap
149
150 Description: Sets OSi_CurrentHeap to /heap/. All subsequent calls to
151 OS_Alloc() will be performed on this heap until another
152 call to OS_SetCurrentHeap().
153
154 Arguments: id : arena ID
155 heap : handle to a heap that was returned from OS_CreateHeap()
156
157 Returns: previous heap handle.
158 *---------------------------------------------------------------------------*/
159 extern OSHeapHandle OS_SetCurrentHeap(OSArenaId id, OSHeapHandle heap);
160
161 /*---------------------------------------------------------------------------*
162 Name: OS_AllocFromHeap
163
164 Description: Allocates /size/ bytes from /heap/. Some additional memory
165 will also be consumed from /heap/.
166
167 Arguments: id : arena ID
168 heap : handle to a heap that was returned from OS_CreateHeap()
169 size : size of object to be allocated
170
171 Returns: a null pointer or a pointer to the allocated space aligned
172 with ALIGNMENT bytes boundaries
173 *---------------------------------------------------------------------------*/
174 extern void *OS_AllocFromHeap(OSArenaId id, OSHeapHandle heap, u32 size);
175
176 /*---------------------------------------------------------------------------*
177 Name: OS_AllocFixed
178
179 Description: Allocates the block of memory specified by /rstart/ and
180 /rend/. Will break up any heap. Will not check for overlap
181 with other fixed blocks. May create a zero-length heap.
182
183 Arguments: id : arena ID
184 rstart : pointer to starting addr of block
185 rend : pointer to ending addr of block
186
187 Returns: a null pointer or a pointer to the allocated space aligned
188 with ALIGNMENT bytes boundaries. /rstart/ and /rend/ might be
189 adjusted to the boundaries of really allocated region.
190 *---------------------------------------------------------------------------*/
191 extern void *OS_AllocFixed(OSArenaId id, void **rstart, void **rend);
192
193 /*---------------------------------------------------------------------------*
194 Name: OS_FreeToHeap
195
196 Description: Returns obj /ptr/ to /heap/.
197
198 Arguments: id : arena ID
199 heap : handle to the heap that /ptr/ was allocated from
200 ptr : pointer to object previously returned from
201 OS_Alloc() or OS_AllocFromHeap().
202
203 Returns: None.
204 *---------------------------------------------------------------------------*/
205 extern void OS_FreeToHeap(OSArenaId id, OSHeapHandle heap, void *ptr);
206
207 /*---------------------------------------------------------------------------*
208 Name: OS_FreeAllToHeap
209
210 Description: free all allocated block in the specified heap
211
212 Arguments: id : arena ID
213 heap : handle to the heap
214
215 Returns: None.
216 *---------------------------------------------------------------------------*/
217 extern void OS_FreeAllToHeap(OSArenaId id, OSHeapHandle heap);
218
219 /*---------------------------------------------------------------------------*
220 Name: OS_CheckHeap
221
222 Description: Checks heap sanity for debugging
223
224 Arguments: id : arena ID
225 heap : handle to a live heap.
226
227 Returns: -1 if heap is not consistent. Otherwise, returns number
228 of bytes available in free.
229 *---------------------------------------------------------------------------*/
230 extern s32 OS_CheckHeap(OSArenaId id, OSHeapHandle heap);
231
232 /*---------------------------------------------------------------------------*
233 Name: OS_DumpHeap
234
235 Description: Dumps statistics and elements of a heap
236
237 Arguments: id : arena ID
238 heap : handle to a heap.
239
240 Returns: None.
241 *---------------------------------------------------------------------------*/
242 extern void OS_DumpHeap(OSArenaId id, OSHeapHandle heap);
243
244 /*---------------------------------------------------------------------------*
245 Name: OS_ReferentSize
246
247 Description: Returns size of payload
248
249 Arguments: id : arena ID
250 ptr : pointer to object previously returned from OS_Alloc()
251 or OSAllocFromHeap().
252
253 Returns: size of payload
254 *---------------------------------------------------------------------------*/
255 extern u32 OS_ReferentSize(OSArenaId id, void *ptr);
256
257 /*---------------------------------------------------------------------------*
258 Name: OS_VisitAllocated
259
260 Description: Visits every element of every allocated block of memory,
261 calling a routine on each one.
262
263 Arguments: id : arena ID
264 visitor : function to be called on each cell
265
266 Returns: None.
267 *---------------------------------------------------------------------------*/
268 extern void OS_VisitAllocated(OSArenaId id, OSAllocVisitor visitor);
269
270 /*---------------------------------------------------------------------------*
271 Name: OS_GetTotalAllocSize
272
273 Description: Get sum of allocated block size,
274 not including block header.
275
276 Arguments: id : arena ID
277 heap : handle to a heap.
278
279 Returns: sum of allocated block size
280 *---------------------------------------------------------------------------*/
281 extern u32 OSi_GetTotalAllocSize(OSArenaId id, OSHeapHandle heap, BOOL isHeadInclude);
OS_GetTotalAllocSize(OSArenaId id,OSHeapHandle heap)282 static inline u32 OS_GetTotalAllocSize(OSArenaId id, OSHeapHandle heap)
283 {
284 return OSi_GetTotalAllocSize(id, heap, FALSE);
285 }
286
287 /*---------------------------------------------------------------------------*
288 Name: OS_GetTotalOccupiedSize
289
290 Description: Get sum of allocated block size,
291 including block header.
292
293 Arguments: id : arena ID
294 heap : handle to a heap.
295
296 Returns: sum of allocated block size
297 *---------------------------------------------------------------------------*/
OS_GetTotalOccupiedSize(OSArenaId id,OSHeapHandle heap)298 static inline u32 OS_GetTotalOccupiedSize(OSArenaId id, OSHeapHandle heap)
299 {
300 return OSi_GetTotalAllocSize(id, heap, TRUE);
301 }
302
303 /*---------------------------------------------------------------------------*
304 Name: OS_GetTotalFreeSize
305
306 Description: Get sum of free block size,
307 not includeing of block header.
308
309 Arguments: id : arena ID
310 heap : handle to a heap.
311
312 Returns: sum of free block size
313 *---------------------------------------------------------------------------*/
314 extern u32 OS_GetTotalFreeSize(OSArenaId id, OSHeapHandle heap);
315
316 /*---------------------------------------------------------------------------*
317 Name: OS_GetMaxFreeSize
318
319 Description: Get maximun free block size
320
321 Arguments: id : arena ID
322 heap : handle to a heap.
323
324 Returns: maximum free block size.
325 *---------------------------------------------------------------------------*/
326 extern u32 OS_GetMaxFreeSize(OSArenaId id, OSHeapHandle heap);
327
328 /*---------------------------------------------------------------------------*
329 Name: OS_ClearHeap
330
331 Description: re-initialize heap.
332
333 Arguments: id : arena ID
334 heap : handle to a heap.
335 start: starting addr of heap
336 end : endinf addr of heap
337
338 Returns: None.
339 *---------------------------------------------------------------------------*/
340 extern void OS_ClearHeap(OSArenaId id, OSHeapHandle heap, void *start, void *end);
341
342 /*---------------------------------------------------------------------------*
343 Name: OS_ClearExtraHeap
344
345 Description: re-initialize extra heap.
346
347 Arguments: id : arena ID
348 heap : handle to a heap.
349
350 Returns: None.
351 *---------------------------------------------------------------------------*/
352 #if defined(SDK_TWL) && !defined(SDK_TWLLTD)
353 extern void OS_ClearExtraHeap(OSArenaId id, OSHeapHandle heap);
354 #endif
355
356 //================================================================================
357 // convenient functions
358 //================================================================================
359 /*---------------------------------------------------------------------------*
360 Name: OS_AllocFromMain / OS_FreeToMain / OS_FreeAllToMain
361
362 Description: convenience Alloc/Free for access main memory,
363 Main-Processor private
364 *---------------------------------------------------------------------------*/
OS_AllocFromMain(u32 size)365 static inline void *OS_AllocFromMain(u32 size)
366 {
367 return OS_AllocFromHeap(OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, size);
368 }
OS_FreeToMain(void * ptr)369 static inline void OS_FreeToMain(void *ptr)
370 {
371 OS_FreeToHeap(OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, ptr);
372 }
OS_FreeAllToMain(void)373 static inline void OS_FreeAllToMain(void)
374 {
375 OS_FreeAllToHeap(OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE);
376 }
377
378 /*---------------------------------------------------------------------------*
379 Name: OS_AllocFromSubPriv / OS_FreeToSubPriv / OS_FreeAllToSubPriv
380
381 Description: convenience Alloc/Free for access main memory,
382 Sub-Processor private
383 *---------------------------------------------------------------------------*/
OS_AllocFromSubPriv(u32 size)384 static inline void *OS_AllocFromSubPriv(u32 size)
385 {
386 return OS_AllocFromHeap(OS_ARENA_MAIN_SUBPRIV, OS_CURRENT_HEAP_HANDLE, size);
387 }
OS_FreeToSubPriv(void * ptr)388 static inline void OS_FreeToSubPriv(void *ptr)
389 {
390 OS_FreeToHeap(OS_ARENA_MAIN_SUBPRIV, OS_CURRENT_HEAP_HANDLE, ptr);
391 }
OS_FreeAllToSubPriv(void)392 static inline void OS_FreeAllToSubPriv(void)
393 {
394 OS_FreeAllToHeap(OS_ARENA_MAIN_SUBPRIV, OS_CURRENT_HEAP_HANDLE);
395 }
396
397 /*---------------------------------------------------------------------------*
398 Name: OS_AllocFromMainEx / OS_FreeToMainEx / OS_FreeAllToMainEx
399
400 Description: convenience Alloc/Free for extended main memory
401 *---------------------------------------------------------------------------*/
OS_AllocFromMainEx(u32 size)402 static inline void *OS_AllocFromMainEx(u32 size)
403 {
404 return OS_AllocFromHeap(OS_ARENA_MAINEX, OS_CURRENT_HEAP_HANDLE, size);
405 }
OS_FreeToMainEx(void * ptr)406 static inline void OS_FreeToMainEx(void *ptr)
407 {
408 OS_FreeToHeap(OS_ARENA_MAINEX, OS_CURRENT_HEAP_HANDLE, ptr);
409 }
OS_FreeAllToMainEx(void)410 static inline void OS_FreeAllToMainEx(void)
411 {
412 OS_FreeAllToHeap(OS_ARENA_MAINEX, OS_CURRENT_HEAP_HANDLE);
413 }
414
415 /*---------------------------------------------------------------------------*
416 Name: OS_AllocFromITCM / OS_FreeToITCM / OS_FreeAllToITCM
417
418 Description: convenience Alloc/Free for ITCM
419 *---------------------------------------------------------------------------*/
420 #ifdef SDK_ARM9
OS_AllocFromITCM(u32 size)421 static inline void *OS_AllocFromITCM(u32 size)
422 {
423 return OS_AllocFromHeap(OS_ARENA_ITCM, OS_CURRENT_HEAP_HANDLE, size);
424 }
OS_FreeToITCM(void * ptr)425 static inline void OS_FreeToITCM(void *ptr)
426 {
427 OS_FreeToHeap(OS_ARENA_ITCM, OS_CURRENT_HEAP_HANDLE, ptr);
428 }
OS_FreeAllToITCM(void)429 static inline void OS_FreeAllToITCM(void)
430 {
431 OS_FreeAllToHeap(OS_ARENA_ITCM, OS_CURRENT_HEAP_HANDLE);
432 }
433 #endif // SDK_ARM9
434
435 /*---------------------------------------------------------------------------*
436 Name: OS_AllocFromDTCM / OS_FreeToDTCM / OS_FreeAllToDTCM
437
438 Description: convenience Alloc/Free for DTCM
439 *---------------------------------------------------------------------------*/
440 #ifdef SDK_ARM9
OS_AllocFromDTCM(u32 size)441 static inline void *OS_AllocFromDTCM(u32 size)
442 {
443 return OS_AllocFromHeap(OS_ARENA_DTCM, OS_CURRENT_HEAP_HANDLE, size);
444 }
OS_FreeToDTCM(void * ptr)445 static inline void OS_FreeToDTCM(void *ptr)
446 {
447 OS_FreeToHeap(OS_ARENA_DTCM, OS_CURRENT_HEAP_HANDLE, ptr);
448 }
OS_FreeAllToDTCM(void)449 static inline void OS_FreeAllToDTCM(void)
450 {
451 OS_FreeAllToHeap(OS_ARENA_DTCM, OS_CURRENT_HEAP_HANDLE);
452 }
453 #endif
454
455 /*---------------------------------------------------------------------------*
456 Name: OS_AllocFromShared / OS_FreeToShared / OS_FreeAllToShared
457
458 Description: convenience Alloc/Free for shared memory
459 *---------------------------------------------------------------------------*/
OS_AllocFromShared(u32 size)460 static inline void *OS_AllocFromShared(u32 size)
461 {
462 return OS_AllocFromHeap(OS_ARENA_SHARED, OS_CURRENT_HEAP_HANDLE, size);
463 }
OS_FreeToShared(void * ptr)464 static inline void OS_FreeToShared(void *ptr)
465 {
466 OS_FreeToHeap(OS_ARENA_SHARED, OS_CURRENT_HEAP_HANDLE, ptr);
467 }
OS_FreeAllToShared(void)468 static inline void OS_FreeAllToShared(void)
469 {
470 OS_FreeAllToHeap(OS_ARENA_SHARED, OS_CURRENT_HEAP_HANDLE);
471 }
472
473 /*---------------------------------------------------------------------------*
474 Name: OS_AllocFromWramMain / OS_FreeToWramMain / OS_FreeAllToWramMain
475
476 Description: convenience Alloc/Free for common Work RAM,
477 Main-Processor private
478 *---------------------------------------------------------------------------*/
OS_AllocFromWramMain(u32 size)479 static inline void *OS_AllocFromWramMain(u32 size)
480 {
481 return OS_AllocFromHeap(OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE, size);
482 }
OS_FreeToWramMain(void * ptr)483 static inline void OS_FreeToWramMain(void *ptr)
484 {
485 OS_FreeToHeap(OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE, ptr);
486 }
OS_FreeAllToWramMain(void)487 static inline void OS_FreeAllToWramMain(void)
488 {
489 OS_FreeAllToHeap(OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE);
490 }
491
492 /*---------------------------------------------------------------------------*
493 Name: OS_AllocFromWramSub / OS_FreeToWramSub / OS_FreeAllToWramSub
494
495 Description: convenience Alloc/Free for common Work RAM,
496 Sub-Processor private
497 *---------------------------------------------------------------------------*/
OS_AllocFromWramSub(u32 size)498 static inline void *OS_AllocFromWramSub(u32 size)
499 {
500 return OS_AllocFromHeap(OS_ARENA_WRAM_SUB, OS_CURRENT_HEAP_HANDLE, size);
501 }
OS_FreeToWramSub(void * ptr)502 static inline void OS_FreeToWramSub(void *ptr)
503 {
504 OS_FreeToHeap(OS_ARENA_WRAM_SUB, OS_CURRENT_HEAP_HANDLE, ptr);
505 }
OS_FreeAllToWramSub(void)506 static inline void OS_FreeAllToWramSub(void)
507 {
508 OS_FreeAllToHeap(OS_ARENA_WRAM_SUB, OS_CURRENT_HEAP_HANDLE);
509 }
510
511 /*---------------------------------------------------------------------------*
512 Name: OS_AllocFromSubPrivWram / OS_FreeToSubPrivWram / OS_FreeAllToSubPrivWram
513
514 Description: convenience Alloc/Free for Sub-Processor private Work RAM
515 *---------------------------------------------------------------------------*/
OS_AllocFromSubPrivWram(u32 size)516 static inline void *OS_AllocFromSubPrivWram(u32 size)
517 {
518 return OS_AllocFromHeap(OS_ARENA_WRAM_SUBPRIV, OS_CURRENT_HEAP_HANDLE, size);
519 }
OS_FreeToSubPrivWram(void * ptr)520 static inline void OS_FreeToSubPrivWram(void *ptr)
521 {
522 OS_FreeToHeap(OS_ARENA_WRAM_SUBPRIV, OS_CURRENT_HEAP_HANDLE, ptr);
523 }
OS_FreeAllToSubPrivWram(void)524 static inline void OS_FreeAllToSubPrivWram(void)
525 {
526 OS_FreeAllToHeap(OS_ARENA_WRAM_SUBPRIV, OS_CURRENT_HEAP_HANDLE);
527 }
528
529 /*---------------------------------------------------------------------------*
530 Name: OS_Alloc
531
532 Description: same as OS_AllocFromMain() (if ARM9)
533 same as OS_AllocFromSubPriv() (if ARM7)
534 *---------------------------------------------------------------------------*/
535 #ifdef SDK_ARM9
536 # define OS_Alloc( size ) OS_AllocFromMain( (size) )
537 #else
538 # define OS_Alloc( size ) OS_AllocFromSubPriv( (size) )
539 #endif
540
541 /*---------------------------------------------------------------------------*
542 Name: OS_Free
543
544 Description: same as OS_FreeToMain() (if ARM9)
545 same as OS_FreeToSubPriv() (if ARM7)
546 *---------------------------------------------------------------------------*/
547 #ifdef SDK_ARM9
548 # define OS_Free( ptr ) OS_FreeToMain( (ptr) )
549 #else
550 # define OS_Free( ptr ) OS_FreeToSubPriv( (ptr) )
551 #endif
552
553 /*---------------------------------------------------------------------------*
554 Name: OS_FreeAll
555
556 Description: same as OS_FreeAllToMain() (if ARM9)
557 same as OS_FreeAllToSubPriv() (if ARM7)
558 *---------------------------------------------------------------------------*/
559 #ifdef SDK_ARM9
560 # define OS_FreeAll() OS_FreeAllToMain()
561 #else
562 # define OS_FreeAll() OS_FreeAllToSubPriv()
563 #endif
564
565
566 //================================================================================
567 // Check Alocated Memory
568 //================================================================================
569 /*---------------------------------------------------------------------------*
570 Name: OS_IsOnMainMemory
571
572 Description: check memory address to which a pointer points is on main RAM.
573
574 Arguments: ptr : pointer
575
576 Returns: TRUE if ptr points is on main RAM.
577 *---------------------------------------------------------------------------*/
578 BOOL OS_IsOnMainMemory(void* ptr);
579
580 /*---------------------------------------------------------------------------*
581 Name: OS_IsOnExtendedMainMemory
582
583 Description: check memory address to which a pointer points is on extended main RAM.
584
585 Arguments: ptr : pointer
586
587 Returns: TRUE if ptr points is on extended main RAM.
588 *---------------------------------------------------------------------------*/
589 BOOL OS_IsOnExtendedMainMemory(void* ptr);
590
591 /*---------------------------------------------------------------------------*
592 Name: OS_IsOnWramB
593
594 Description: check memory address to which a pointer points is on WRAM B.
595
596 Arguments: ptr : pointer
597
598 Returns: TRUE if ptr points is on WRAM B.
599 *---------------------------------------------------------------------------*/
600 BOOL OS_IsOnWramB(void* ptr);
601
602 /*---------------------------------------------------------------------------*
603 Name: OS_IsOnWramC
604
605 Description: check memory address to which a pointer points is on WRAM C.
606
607 Arguments: ptr : pointer
608
609 Returns: TRUE if ptr points is on WRAM C.
610 *---------------------------------------------------------------------------*/
611 BOOL OS_IsOnWramC(void* ptr);
612
613 /*---------------------------------------------------------------------------*
614 Name: OS_IsOnWram0
615
616 Description: check memory address to which a pointer points is on WRAM 0.
617
618 Arguments: ptr : pointer
619
620 Returns: TRUE if ptr points is on WRAM 0.
621 *---------------------------------------------------------------------------*/
622 BOOL OS_IsOnWram0(void* ptr);
623
624 /*---------------------------------------------------------------------------*
625 Name: OS_IsOnWram1
626
627 Description: check memory address to which a pointer points is on WRAM 1.
628
629 Arguments: ptr : pointer
630
631 Returns: TRUE if ptr points is on WRAM 1.
632 *---------------------------------------------------------------------------*/
633 BOOL OS_IsOnWram1(void* ptr);
634
635 /*---------------------------------------------------------------------------*
636 Name: OS_IsOnWram
637
638 Description: check memory address to which a pointer points is on WRAM.
639
640 Arguments: ptr : pointer
641
642 Returns: TRUE if ptr points is on WRAM.
643 *---------------------------------------------------------------------------*/
644 BOOL OS_IsOnWram(void* ptr);
645
646 /*---------------------------------------------------------------------------*
647 Name: OS_IsOnVram
648
649 Description: check memory address to which a pointer points is on VRAM.
650
651 Arguments: ptr : pointer
652
653 Returns: TRUE if ptr points is on VRAM.
654 *---------------------------------------------------------------------------*/
655 BOOL OS_IsOnVram(void* ptr);
656
657 /*---------------------------------------------------------------------------*
658 Name: OS_IsOnItcm
659
660 Description: check memory address to which a pointer points is on ITCM.
661
662 Arguments: ptr : pointer
663
664 Returns: TRUE if ptr points is on ITCM.
665 *---------------------------------------------------------------------------*/
666 BOOL OS_IsOnItcm(void* ptr);
667
668 /*---------------------------------------------------------------------------*
669 Name: OS_IsOnDtcm
670
671 Description: check memory address to which a pointer points is on DTCM.
672
673 Arguments: ptr : pointer
674
675 Returns: TRUE if ptr points is on DTCM.
676 *---------------------------------------------------------------------------*/
677 BOOL OS_IsOnDtcm(void* ptr);
678
679 /*---------------------------------------------------------------------------*
680 Name: OS_IsOnWramA
681
682 Description: check memory address to which a pointer points is on WRAM B.
683
684 Arguments: ptr : pointer
685
686 Returns: TRUE if ptr points is on WRAM A.
687 *---------------------------------------------------------------------------*/
688 BOOL OS_IsOnWramA(void* ptr);
689
690 /*---------------------------------------------------------------------------*
691 Name: OS_IsOnArm7PrvWram
692
693 Description: check memory address to which a pointer points is on ARM7 Private WRAM.
694
695 Arguments: ptr : pointer
696
697 Returns: TRUE if ptr points is on ARM7 Private WRAM.
698 *---------------------------------------------------------------------------*/
699 BOOL OS_IsOnArm7PrvWram(void* ptr);
700
701
702 #ifdef __cplusplus
703 } /* extern "C" */
704 #endif
705
706 /* NITRO_OS_ALLOC_H_ */
707 #endif
708