?? pipe.c
字號(hào):
/**********************************************************************************
* pipe.c
* coded by hspark@ce.cnu.ac.kr
* date : 2001/06/23
* modified by hjahn@ce.cnu.ac.kr
* date : 2003/03/03
**********************************************************************************/
#include "kernel\\mk_sys.h"
#include "kernel\\mk_pipe.h"
#if (defined(_MK_PIPE) && defined(_MK_DDI))
struct mk_pipe_struct *MK_pPipeListHead;
struct mk_pipe_struct *MK_pPipeListTail;
VOID
MK_PipeInitialize(VOID)
{
MK_FixedPipeInitialize();
MK_VariablePipeInitialize();
MK_pPipeListHead = MK_NULL;
MK_pPipeListTail = MK_NULL;
}
STATUS
MK_CreatePipe(MK_PIPE *pPipe, CHAR *pName, VOID *pAddr, INT Count, BOOLEAN Type,
UINT Size)
{
//CHAR pTemp[MK_NAME_MAX + 8];
INT Flags;
STATUS status;
pPipe->p_Type = Type;
//MK_BlockCopy(pPipe->p_pName, pName, MK_NAME_MAX-1);
//pPipe->p_pName[MK_NAME_MAX-1] = '\0';
pPipe->p_pName = pName;
//MK_BlockCopy(pTemp, pName, MK_NAME_MAX);
//MK_Strcat(pTemp, "_pipe");
if(pPipe->p_Type == MK_FIXED_SIZE)
{
status = MK_CreateFixedPipe(&pPipe->p_Pipe.pu_FixedPipe, MK_NULL, pAddr, Count, Size);
//status = MK_CreateFixedPipe(&pPipe->p_Pipe.pu_FixedPipe, pTemp, pAddr, Count, Size);
}
else
{
status = MK_CreateVariablePipe(&pPipe->p_Pipe.pu_VariablePipe, MK_NULL, pAddr, Count, Size);
//status = MK_CreateVariablePipe(&pPipe->p_Pipe.pu_VariablePipe, pTemp, pAddr, Count, Size);
}
if (status == MK_NO_ERROR) {
Flags = MK_InterruptDisable(); /* Critical Region */
pPipe->p_pNext = MK_NULL;
pPipe->p_pPrev = MK_NULL;
if(MK_pPipeListHead == MK_NULL)
{
MK_pPipeListHead = pPipe;
MK_pPipeListTail = pPipe;
}
else
{
pPipe->p_pPrev = MK_pPipeListTail;
MK_pPipeListTail->p_pNext = pPipe;
MK_pPipeListTail = pPipe;
}
MK_InterruptRestore(Flags);
}
return status;
}
STATUS
MK_DeletePipe(MK_PIPE *pPipe)
{
int Flags;
if(pPipe->p_Type == MK_FIXED_SIZE)
{
MK_DeleteFixedPipe(&pPipe->p_Pipe.pu_FixedPipe);
}
else
{
MK_DeleteVariablePipe(&pPipe->p_Pipe.pu_VariablePipe);
}
Flags = MK_InterruptDisable(); /* Critical Region */
if(MK_pPipeListHead == MK_pPipeListTail)
{
MK_pPipeListHead = MK_NULL;
MK_pPipeListTail = MK_NULL;
}
else
{
if(pPipe == MK_pPipeListHead)
{
MK_pPipeListHead = pPipe->p_pNext;
MK_pPipeListHead->p_pPrev = MK_NULL;
}
else if(pPipe == MK_pPipeListTail)
{
MK_pPipeListTail = pPipe->p_pPrev;
MK_pPipeListTail->p_pNext = MK_NULL;
}
else
{
pPipe->p_pPrev->p_pNext = pPipe->p_pNext;
pPipe->p_pNext->p_pPrev = pPipe->p_pPrev;
}
}
pPipe->p_pNext = MK_NULL;
pPipe->p_pPrev = MK_NULL;
MK_InterruptRestore(Flags);
return MK_NO_ERROR;
}
#ifdef _MK_DDI
STATUS
MK_PipeInformation(struct mk_ddi_struct *pDDI)
{
MK_PIPE *pPipe;
int Flags;
Flags = MK_InterruptDisable(); /* Critical Region */
for(pPipe = MK_pPipeListHead; pPipe != MK_NULL; pPipe = pPipe->p_pNext)
{
MK_Fprintf(pDDI, "%s ", pPipe->p_pName);
if(pPipe->p_Type == MK_FIXED_SIZE)
{
MK_Fprintf(pDDI, "F ");
}
else
{
MK_Fprintf(pDDI, "V ");
}
}
MK_Fprintf(pDDI,"\n");
MK_InterruptRestore(Flags);
return MK_NO_ERROR;
}
#endif /* #ifdef _MK_DDI */
#endif /* #if (defined(_MK_PIPE) && defined(_MK_DDI)) */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -