All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
le_mem.h
Go to the documentation of this file.
1 
371 //--------------------------------------------------------------------------------------------------
379 //--------------------------------------------------------------------------------------------------
380 
381 #ifndef LEGATO_MEM_INCLUDE_GUARD
382 #define LEGATO_MEM_INCLUDE_GUARD
383 
384 #ifndef LEGATO_COMPONENT
385 #define LEGATO_COMPONENT
386 #endif
387 
388 //--------------------------------------------------------------------------------------------------
393 //--------------------------------------------------------------------------------------------------
394 typedef struct le_mem_Pool* le_mem_PoolRef_t;
395 
396 
397 //--------------------------------------------------------------------------------------------------
409 //--------------------------------------------------------------------------------------------------
410 typedef void (*le_mem_Destructor_t)
411 (
412  void* objPtr
413 );
414 
415 
416 //--------------------------------------------------------------------------------------------------
420 //--------------------------------------------------------------------------------------------------
421 typedef struct
422 {
423  size_t numBlocksInUse;
425  size_t numOverflows;
426  uint64_t numAllocs;
427  size_t numFree;
428 }
430 
431 
432 //--------------------------------------------------------------------------------------------------
438 //--------------------------------------------------------------------------------------------------
439 le_mem_PoolRef_t _le_mem_CreatePool
440 (
441  const char* componentName,
442  const char* name,
443  size_t objSize
444 );
447 
448 
449 //--------------------------------------------------------------------------------------------------
460 //--------------------------------------------------------------------------------------------------
462 (
463  const char* name,
464  size_t objSize
465 )
467 {
468  return _le_mem_CreatePool(STRINGIZE(LEGATO_COMPONENT), name, objSize);
469 }
470 
471 
472 //--------------------------------------------------------------------------------------------------
481 //--------------------------------------------------------------------------------------------------
483 (
484  le_mem_PoolRef_t pool,
485  size_t numObjects
486 );
487 
488 
489 //--------------------------------------------------------------------------------------------------
497 //--------------------------------------------------------------------------------------------------
498 void* le_mem_TryAlloc
499 (
500  le_mem_PoolRef_t pool
501 );
502 
503 
504 //--------------------------------------------------------------------------------------------------
514 //--------------------------------------------------------------------------------------------------
515 void* le_mem_AssertAlloc
516 (
517  le_mem_PoolRef_t pool
518 );
519 
520 
521 //--------------------------------------------------------------------------------------------------
531 //--------------------------------------------------------------------------------------------------
532 void* le_mem_ForceAlloc
533 (
534  le_mem_PoolRef_t pool
535 );
536 
537 
538 //--------------------------------------------------------------------------------------------------
548 //--------------------------------------------------------------------------------------------------
550 (
551  le_mem_PoolRef_t pool,
552  size_t numObjects
553 );
555 
556 
557 //--------------------------------------------------------------------------------------------------
571 //--------------------------------------------------------------------------------------------------
572 void le_mem_Release
573 (
574  void* objPtr
575 );
576 
577 
578 //--------------------------------------------------------------------------------------------------
587 //--------------------------------------------------------------------------------------------------
588 void le_mem_AddRef
589 (
590  void* objPtr
591 );
592 
593 
594 //--------------------------------------------------------------------------------------------------
603 //--------------------------------------------------------------------------------------------------
605 (
606  le_mem_PoolRef_t pool,
607  le_mem_Destructor_t destructor
608 );
609 
610 
611 //--------------------------------------------------------------------------------------------------
618 //--------------------------------------------------------------------------------------------------
619 void le_mem_GetStats
620 (
621  le_mem_PoolRef_t pool,
622  le_mem_PoolStats_t* statsPtr
623 );
624 
625 
626 //--------------------------------------------------------------------------------------------------
633 //--------------------------------------------------------------------------------------------------
635 (
636  le_mem_PoolRef_t pool
637 );
638 
639 
640 //--------------------------------------------------------------------------------------------------
651 //--------------------------------------------------------------------------------------------------
653 (
654  le_mem_PoolRef_t pool,
655  char* namePtr,
656  size_t bufSize
657 );
658 
659 
660 //--------------------------------------------------------------------------------------------------
668 //--------------------------------------------------------------------------------------------------
669 const bool le_mem_IsSubPool
670 (
671  le_mem_PoolRef_t pool
672 );
673 
674 
675 //--------------------------------------------------------------------------------------------------
683 //--------------------------------------------------------------------------------------------------
685 (
686  le_mem_PoolRef_t pool
687 );
688 
689 
690 //--------------------------------------------------------------------------------------------------
697 //--------------------------------------------------------------------------------------------------
699 (
700  le_mem_PoolRef_t pool
701 );
702 
703 
704 //--------------------------------------------------------------------------------------------------
711 //--------------------------------------------------------------------------------------------------
713 (
714  le_mem_PoolRef_t pool
715 );
716 
717 
718 //--------------------------------------------------------------------------------------------------
724 //--------------------------------------------------------------------------------------------------
725 le_mem_PoolRef_t _le_mem_FindPool
726 (
727  const char* componentName,
728  const char* name
729 );
731 
732 
733 //--------------------------------------------------------------------------------------------------
740 //--------------------------------------------------------------------------------------------------
741 static inline le_mem_PoolRef_t le_mem_FindPool
742 (
743  const char* name
744 )
745 {
746  return _le_mem_FindPool(STRINGIZE(LEGATO_COMPONENT), name);
747 }
748 
749 
750 //--------------------------------------------------------------------------------------------------
756 //--------------------------------------------------------------------------------------------------
757 le_mem_PoolRef_t _le_mem_CreateSubPool
758 (
759  le_mem_PoolRef_t superPool,
760  const char* componentName,
761  const char* name,
762  size_t numObjects
764 );
766 
767 
768 //--------------------------------------------------------------------------------------------------
778 //--------------------------------------------------------------------------------------------------
780 (
781  le_mem_PoolRef_t superPool,
782  const char* name,
783  size_t numObjects
785 )
786 {
787  return _le_mem_CreateSubPool(superPool, STRINGIZE(LEGATO_COMPONENT), name, numObjects);
788 }
789 
790 
791 //--------------------------------------------------------------------------------------------------
800 //--------------------------------------------------------------------------------------------------
802 (
803  le_mem_PoolRef_t subPool
804 );
805 
806 
807 #endif // LEGATO_MEM_INCLUDE_GUARD
void * le_mem_TryAlloc(le_mem_PoolRef_t pool)
size_t le_mem_GetTotalNumObjs(le_mem_PoolRef_t pool)
le_mem_PoolRef_t le_mem_ExpandPool(le_mem_PoolRef_t pool, size_t numObjects)
uint64_t numAllocs
Number of times an object has been allocated from this pool.
Definition: le_mem.h:426
le_result_t
Definition: le_basics.h:35
void * le_mem_AssertAlloc(le_mem_PoolRef_t pool)
void le_mem_GetStats(le_mem_PoolRef_t pool, le_mem_PoolStats_t *statsPtr)
const bool le_mem_IsSubPool(le_mem_PoolRef_t pool)
size_t numBlocksInUse
Number of currently allocated blocks.
Definition: le_mem.h:423
static le_mem_PoolRef_t le_mem_FindPool(const char *name)
Definition: le_mem.h:742
size_t maxNumBlocksUsed
Maximum number of allocated blocks at any one time.
Definition: le_mem.h:424
#define STRINGIZE(x)
Definition: le_basics.h:205
void le_mem_SetDestructor(le_mem_PoolRef_t pool, le_mem_Destructor_t destructor)
static le_mem_PoolRef_t le_mem_CreatePool(const char *name, size_t objSize)
Definition: le_mem.h:462
void le_mem_ResetStats(le_mem_PoolRef_t pool)
void(* le_mem_Destructor_t)(void *objPtr)
Definition: le_mem.h:411
void le_mem_SetNumObjsToForce(le_mem_PoolRef_t pool, size_t numObjects)
void le_mem_DeleteSubPool(le_mem_PoolRef_t subPool)
struct le_mem_Pool * le_mem_PoolRef_t
Definition: le_mem.h:394
le_result_t le_mem_GetName(le_mem_PoolRef_t pool, char *namePtr, size_t bufSize)
void le_mem_Release(void *objPtr)
size_t numFree
Number of free objects currently available in this pool.
Definition: le_mem.h:427
size_t numOverflows
Number of times le_mem_ForceAlloc() had to expand the pool.
Definition: le_mem.h:425
Definition: le_mem.h:421
size_t le_mem_GetObjectFullSize(le_mem_PoolRef_t pool)
size_t le_mem_GetObjectSize(le_mem_PoolRef_t pool)
void le_mem_AddRef(void *objPtr)
void * le_mem_ForceAlloc(le_mem_PoolRef_t pool)
static le_mem_PoolRef_t le_mem_CreateSubPool(le_mem_PoolRef_t superPool, const char *name, size_t numObjects)
Definition: le_mem.h:780