📄 pmce.c
字号:
/* 03-18-1994 Verified version 1.1 *//* *//*************************************************************************/STATUS PMCE_Delete_Partition_Pool(NU_PARTITION_POOL *pool_ptr){PM_PCB *pool; /* Pool control block ptr */STATUS status; /* Completion status */ /* Move input pool pointer into internal pointer. */ pool = (PM_PCB *) pool_ptr; /* Determine if the partition pool pointer is valid. */ if ((pool) && (pool -> pm_id == PM_PARTITION_ID)) /* Partition pool pointer is valid, call function to delete it. */ status = PMC_Delete_Partition_Pool(pool_ptr); else /* Partition pool pointer is invalid, indicate in completion status. */ status = NU_INVALID_POOL; /* Return completion status. */ return(status);}/*************************************************************************//* *//* FUNCTION *//* *//* PMCE_Allocate_Partition *//* *//* DESCRIPTION *//* *//* This function performs error checking on the parameters supplied *//* to the allocate partition function. *//* *//* CALLED BY *//* *//* Application *//* *//* CALLS *//* *//* PMC_Allocate_Partition Actual partition allocate *//* function *//* TCCE_Suspend_Error Check for a task suspension *//* error *//* *//* INPUTS *//* *//* pool_ptr Memory partition pool pointer*//* return_pointer Pointer to the destination *//* memory pointer *//* suspend Suspension option if full *//* *//* OUTPUTS *//* *//* NU_INVALID_POOL Indicates the pool pointer *//* is invalid *//* NU_INVALID_POINTER Indicates the return pointer *//* is NULL *//* NU_INVALID_SUSPEND Indicates the suspension is *//* invalid *//* *//* HISTORY *//* *//* DATE REMARKS *//* *//* 03-01-1993 Created initial version 1.0 *//* 04-19-1993 Verified version 1.0 *//* 03-01-1994 Modified function interface, *//* resulting in version 1.1 *//* *//* 03-18-1994 Verified version 1.1 *//* *//*************************************************************************/STATUS PMCE_Allocate_Partition(NU_PARTITION_POOL *pool_ptr, VOID **return_pointer, UNSIGNED suspend){PM_PCB *pool; /* Pool control block ptr */STATUS status; /* Completion status */ /* Move input pool pointer into internal pointer. */ pool = (PM_PCB *) pool_ptr; /* Determine if partition pool pointer is invalid. */ if (pool == NU_NULL) /* Partition pool pointer is invalid, indicate in completion status. */ status = NU_INVALID_POOL; else if (pool -> pm_id != PM_PARTITION_ID) /* Partition pool pointer is invalid, indicate in completion status. */ status = NU_INVALID_POOL; else if (return_pointer == NU_NULL) /* Return pointer is invalid. */ status = NU_INVALID_POINTER; else if ((suspend) && (TCCE_Suspend_Error())) /* Suspension from a non-task thread. */ status = NU_INVALID_SUSPEND; else /* Parameters are valid, call actual function. */ status = PMC_Allocate_Partition(pool_ptr, return_pointer, suspend); /* Return the completion status. */ return(status);}/*************************************************************************//* *//* FUNCTION *//* *//* PMCE_Deallocate_Partition *//* *//* DESCRIPTION *//* *//* This function performs error checking on the parameters supplied *//* to the deallocate partition function. *//* *//* CALLED BY *//* *//* Application *//* *//* CALLS *//* *//* PMC_Deallocate_Partition Deallocate a partition *//* *//* INPUTS *//* *//* partition Pointer to partition memory *//* *//* OUTPUTS *//* *//* NU_INVALID_POINTER Indicates the supplied *//* partition pointer is NULL, *//* or otherwise invalid. *//* NU_SUCCESS *//* *//* HISTORY *//* *//* DATE REMARKS *//* *//* 03-01-1993 Created initial version 1.0 *//* 04-19-1993 Verified version 1.0 *//* 03-01-1994 Modified function interface, *//* resulting in version 1.1 *//* *//* 03-18-1994 Verified version 1.1 *//* *//*************************************************************************/STATUS PMCE_Deallocate_Partition(VOID *partition){PM_PCB *pool; /* Pool pointer */PM_HEADER *header_ptr; /* Pointer to partition hdr */STATUS status; /* Completion status */ /* Pickup the associated pool's pointer. It is inside the header of each partition. */ header_ptr = (PM_HEADER *) (((BYTE_PTR) partition) - PM_OVERHEAD); /* Determine if the pointer(s) are NULL. */ if ((header_ptr == NU_NULL) || (partition == NU_NULL)) /* Partition pointer is invalid. */ status = NU_INVALID_POINTER; /* Determine if partition pool pointer is invalid. */ else if ((pool = header_ptr -> pm_partition_pool) == NU_NULL) /* Partition pointer is invalid, indicate in completion status. */ status = NU_INVALID_POINTER; else if (pool -> pm_id != PM_PARTITION_ID) /* Partition pool pointer is invalid, indicate in completion status. */ status = NU_INVALID_POINTER; else if (header_ptr -> pm_next_available) /* Partition is still linked on the available list- must not be allocated. */ status = NU_INVALID_POINTER; else /* Parameters are valid, call actual function. */ status = PMC_Deallocate_Partition(partition); /* Return the completion status. */ return(status);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -