⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fscwd.c

📁 zilog的实时操作系统RZK,可以移植到多种处理器上
💻 C
字号:
/*
* File				:	FSCwd.c
*
* Description		:	This file contains the routines related to the CWD 
*						implementation
*
* Copyright 2004 ZiLOG Inc.  ALL RIGHTS RESERVED.
*
* This file contains unpublished confidential and proprietary information
* of ZiLOG, Inc.
* NO PART OF THIS WORK MAY BE DUPLICATED, STORED, PUBLISHED OR DISCLOSED 
* IN ANY FORM WITHOUT THE PRIOR WRITTEN CONSENT OF ZiLOG, INC.
* This is not a license and no use of any kind of this work is authorized
* in the absence of a written license granted by ZiLOG, Inc. in ZiLOG's 
* sole discretion 
*/

#include <string.h>
#include "ZSysgen.h"
#include "ZTypes.h"
#include "ZThread.h"
#include "externvar.h"

#define pCurrentThread ((RZK_TCB_t *)hCurrentThread)
#define pThread ((RZK_TCB_t *)hThread)
extern RZK_THREADHANDLE_t hCurrentThread;
extern RZK_THREADHANDLE_t hThread;
extern void* RZKMemcpy(void *, const void *, RZK_LENGTH_t); // IAR port, UINT changed to RZK_LENGTH_t
extern RZK_THREAD_CB_t nTcb[];
//extern UINT16 MAX_THREADS;

// CWD IMPLEMENTATION
extern INT8 fsCwdPath[] ;
extern UINT8 fsEnable ;
//IAR port comment
//extern UINT nRzkMaxCwdPathLen ;

extern UINT8 fsInAppEntry ;


RZK_STATUS_t RZKGetCwd
(
	RZK_THREADHANDLE_t hThread,
	RZK_PTR_t *pFsDir
)
{
#ifdef RZK_DEBUG
	if ( (pThread == NULL) || 
		(pThread->uState == 0) || 
		(pThread->magic_num !=MAGIC_NUM_THREAD) ||
		(pThread->uState & THREAD_TERMINATED) 
		)
		return RZKERR_INVALID_HANDLE;
#endif

	if(pThread->uState == 0 )
		return RZKERR_INVALID_HANDLE;

	*pFsDir = pThread->pFSCwd ;

//	RZKMemcpy((void *) pFsDir,(const void *)pThread->pFSCwd, sizeof(RZK_PTR_t) );

	return RZKERR_SUCCESS;
}

RZK_STATUS_t RZKSetCwd
(
	RZK_PTR_t pFsDir
)
{
	if ( (pFsDir == NULL) )
		return RZKERR_INVALID_ARGUMENTS;

	if( strlen ( (char const *) pFsDir) > nRzkMaxCwdPathLen)
		return RZKERR_INVALID_ARGUMENTS;
	RZKMemcpy((void *)pCurrentThread->pFSCwd,(const void *)pFsDir,nRzkMaxCwdPathLen);

	return RZKERR_SUCCESS ;
}


RZK_STATUS_t RZKGetHandleByIndex
(
	UINT nIndex,
	RZK_THREADHANDLE_t *hThread
)
{
	*hThread = (RZK_THREADHANDLE_t)&nTcb[nIndex];
#ifdef RZK_DEBUG
	if(((RZK_TCB_t *)(*hThread))->uState == 0 || nIndex > MAX_THREADS)
		return RZKERR_INVALID_ARGUMENTS;
#endif
	return RZKERR_SUCCESS ;
}


RZK_STATUS_t RZKSetFSData
(
	UINT32 ulData
)
{
	pCurrentThread->ulFSData = ulData ;
	return RZKERR_SUCCESS ;
}

UINT32 RZKGetFSData
(
	void
)
{
	return pCurrentThread->ulFSData ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -