亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tmlfs.c

?? MMI層OBJ不能完全編譯
?? C
字號:
/******************************************************************************
 * Flash File System (lfs)
 * Idea, design and coding by Kim T. Petersen, ktp@ti.com
 *
 * ffs public API functions
 *
 * 
 *
 ******************************************************************************/

#include "ffs/ffs.h"

#if (LINEAR_FILE_SYSTEM)
#ifndef TARGET
#include "ffs.cfg"
#endif


#if (TARGET == 1)
#include "etm/etm.h"
#include "etm/etm_api.h"
#include "ffs/board/task.h"
#include "ffs/board/tmlfs.h"
#endif

#include "ffs/board/core.h"
#include "ffs/board/ffstrace.h"

#include <string.h>

#define TMLFS_VERSION 1

/******************************************************************************
 *Globals, Marcos and prototypes
 ******************************************************************************/

static int32 bufsize, tmpsize;
static uint8 stringsize;

#define tmlfs_put8(x)  *outp++ = x;
#define tmlfs_put16(x) *outp++ = (x & 0xff); *outp++ = (x>>8);


#define tmlfs_get8() inp[0]; inp += 1; 
#define tmlfs_get16() (inp[0]) | (inp[1] << 8); inp += 2; 
#define tmlfs_get32()  inp[0] | (inp[1] << 8) | (inp[2] << 16)\
                       | (inp[3] << 24); inp += 4; 

#define tmlfs_getdata()    bufsize = inp[0]; inp += 1; \
                           memcpy(buffer, inp, bufsize); inp += bufsize;


/******************************************************************************
 * LFS protocol  
 ******************************************************************************/

#define TMLFS_BUFFER_SIZE 240   // FIXME change to packet size
#define TMLFS_STRING_SIZE 127


//#if (TARGET == 1)
int etm_lfs(T_ETM_PKT *pkt, unsigned char *inp, int insize);

/******************************************************************************
 * TM LFS registration to ETM database
 *****************************************************************************/

/* Callback function registered in ETM database */
int etm_lfs_pkt_receive(uint8 *data, int size)
{
    int status;
    T_ETM_PKT *pkt = NULL;  

    ttw(ttr(TTrTmlfs, "etm_lfs_pkt_receive(*, %d)" NL, size)); 

    /* Create TestMode return Packet */
    if ((pkt = (T_ETM_PKT *) target_malloc(sizeof(T_ETM_PKT))) == NULL) {
        ttw(ttr(TTrTmlfs, "etm_lfs_pkt_receive(): Limit of memory bank reached" NL)); 
        return ETM_NOMEM;
    } 
    
    status = etm_lfs(pkt, data, size);
    return status;
}

/* Init of FFS in the ETM database */
int etm_lfs_init(void)
{
    int status;
    
    status = etm_register("LFS", ETM_LFS, 0, 0, etm_lfs_pkt_receive);

    return status;
} 
//#endif // (TARGET == 1)


/******************************************************************************
 * Helper function
 ******************************************************************************/

// If size is less than zero it is because of a error and we dont have to put any
// data if size is returned in status.
int tmlfs_putdata(unsigned char **buf, unsigned char *src, int size) 
{
 	unsigned char *p = *buf;

	if (size > 0) {
		*p++ = size;
		memcpy(p, src, size); 
		*buf += 1 + size;
	}
	return size;
}

int tmlfs_putstring(unsigned char **buf, char *src, int size) 
{
	unsigned char *p = *buf;

	if (size > 0) {
		*p++ = size;
		memcpy(p, src, size); 
		*buf += 1 + size;
	}
	return size;
}

int tmlfs_getstring(unsigned char ** buf, char *string)
{
	unsigned char *p = *buf;
	
	stringsize = *p++;

	if (stringsize > TMLFS_STRING_SIZE) 
		return EFFS_TOOBIG;

	memcpy(string, p, stringsize);
	*buf += 1 + stringsize;

	return stringsize;
}

/******************************************************************************
 * tm_lfs
 ******************************************************************************/

// Parse input message and execute function. Then fill output buffer with
// return values from the called function and transmit the message.  Return
// number of bytes inserted into output buffer. If return value is negative,
// it represents an error code.
int etm_lfs(T_ETM_PKT *pkt, unsigned char *inp, int insize)
{
	tmlfs_fid_t fid;
	unsigned char buffer[TMLFS_BUFFER_SIZE];
	char string[TMLFS_STRING_SIZE];

    unsigned char *outp_start;
    unsigned char *inp_start  = inp;
	unsigned char *outp;
    char *data_addr = NULL;

	int error = 0, i, fdi, size, param, flags, total_read = 0;
    int offset;
	uint8 type;

	bufsize = stringsize = tmpsize = 0;

	tw(tr(TR_BEGIN, TrTmlfs, "TmLFS\n"));
    
	outp_start = outp = pkt->data;
	
	fid = *inp++;
	ttw(ttr(TTrTmlfs, "etm_lfs 0x%x" NL, fid));
	switch(fid)
	{
		/**********************************************************
		 * Generic Protocol Functions
		 **********************************************************/

	case TMLFS_VERSION:
		tmlfs_put16(TMLFS_VERSION);
		break;

		/**********************************************************
		 * LFS Functions
         **********************************************************/

	case TMLFS_OPEN:
		error = tmlfs_getstring(&inp, string); // Get pathname 'string'
		flags = tmlfs_get8(); // Creat, read or write flag
        size  = tmlfs_get16() // Get size of file
		if (error >= 0)
			error = lfs_open(string, flags, &size);
		tmlfs_put8(error); // fdi
		tw(tr(TR_FUNC, TrTmlfs, "TMLFS_OPEN('%s', %d)\n", string, flags));
		ttw(ttr(TTrTmlfs, "tm_open" NL));
		break;
	case TMLFS_CLOSE:
		fdi = tmlfs_get8(); 
		error = lfs_close(fdi);
		tw(tr(TR_FUNC, TrTmlfs, "TMLFS_CLOSE(%d)\n", fdi));
		ttw(ttr(TTrTmlfs, "tm_close" NL));
		break;
	case TMLFS_WRITE:
		fdi = tmlfs_get8(); 
		tmlfs_getdata();   // copy inputdata to buffer[]
		error = lfs_write(fdi, buffer, bufsize);
		tmlfs_put8(error); // put written size
		tw(tr(TR_FUNC, TrTmlfs, "TMLFS_WRITE(%d, %d)\n", fdi, bufsize));
		ttw(ttr(TTrTmlfs, "tm_write" NL));
		break;
	case TMLFS_READ:
		fdi   = tmlfs_get8(); 
		size  = tmlfs_get8();   // max size is 240 bytes
        offset = tmlfs_get16(); // Get pointer offset
		error = lfs_read(fdi, &data_addr); 
        if ((error != EFFS_OK) && (data_addr != NULL))
            break;
        error = tmlfs_putdata(&outp, (data_addr + offset), size);
		tw(tr(TR_FUNC, TrTmlfs, "TMLFS_READ(%d, %d)\n", fdi, size));
		ttw(ttr(TTrTmlfs, "tm_read" NL));
		break;
	case TMLFS_STAT:
		error = tmlfs_getstring(&inp, string);
		if (error >= 0) 
			error = ffs_stat(string, (struct stat_s *) buffer); // Use ffs stat func.
		if (error >= 0)
			tmffs_putdata(&outp, buffer, sizeof(struct stat_s));
		
		tw(tr(TR_FUNC, TrTmffs, "TMLFS_STAT()\n"));
		ttw(ttr(TTrTmffs, "tm_st" NL));
		break;
	case TMLFS_REMOVE:
		error = tmlfs_getstring(&inp, string);
		if (error >= 0)
			error = lfs_remove(string);
		tw(tr(TR_FUNC, TrTmlfs, "TMLFS_REMOVE()\n"));
		ttw(ttr(TTrTmlfs, "tm_rm" NL));
		break;
	default:
		error = ELFS_NOSYS;
		tmlfs_put8(ELFS_NOSYS);
		tw(tr(TR_FUNC, TrTmlfs, "ERROR: Unknown tmlfs protocol code\n"));
	 	ttw(ttr(TTrTmlfs, "tm?" NL));
		break;
	}
	
	// check if we read beyond buffer end
	if (inp > inp_start + insize) {
		tw(tr(TR_FUNC, TrTmlfs, "ERROR: Read beyond end of input buffer\n"));
		ttw(ttr(TTrTmlfs, "tm_fatal" NL));
		ttw(ttr(TTrTmlfs, "insize: %d, diff: %d" NL, insize, 
				inp - (inp_start + insize)));
		// NOTEME: We really should reset output buffer and put a return
		// code that tells us what went wrong!
		error = ETM_PACKET;  // FIXME find another error 
	}

	ttw(ttr(TTrTmlfs, "error %d" NL, error));
	if (error > 0)
		error = 0;

    pkt->mid    = ETM_LFS;
	pkt->size   = outp - outp_start;
    pkt->status = -error;

    etm_pkt_send(pkt);
    etm_free(pkt);

    tw(tr(TR_END, TrTmlfs, ""));

    return ETM_OK;
}

#endif // LINEAR_FILE_SYSTEM

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
无吗不卡中文字幕| 精品国产乱码久久久久久影片| 欧美在线三级电影| 91精品国产综合久久精品app| 欧美一区二区三区啪啪| 欧美精品一区二区三区在线| 日韩一区日韩二区| 奇米影视一区二区三区小说| 国产精品1024| 欧美日韩电影在线播放| www激情久久| 一区二区三区四区中文字幕| 久草这里只有精品视频| av亚洲精华国产精华精华| 欧美日韩成人在线| 中国av一区二区三区| 三级精品在线观看| 成人一级黄色片| 337p亚洲精品色噜噜| 国产精品系列在线| 天天色图综合网| 成人污污视频在线观看| 欧美久久一二区| 欧美韩国日本综合| 美女久久久精品| 91久久精品国产91性色tv| 精品久久一区二区| 亚洲国产毛片aaaaa无费看 | 欧美日韩激情一区| 欧美国产日韩a欧美在线观看| 无吗不卡中文字幕| 91一区在线观看| 2024国产精品| 青青草97国产精品免费观看| 91美女精品福利| 欧美激情在线免费观看| 日本不卡视频一二三区| 一本大道久久a久久综合婷婷| 国产午夜精品美女毛片视频| 美女视频免费一区| 欧美日韩国产一二三| 亚洲欧美电影院| 成人中文字幕电影| 久久这里只有精品6| 美女视频一区二区三区| 在线亚洲免费视频| 亚洲丝袜美腿综合| 国产91精品免费| 日韩欧美亚洲一区二区| 日韩影院在线观看| 欧美影院精品一区| 亚洲免费大片在线观看| 成人一二三区视频| 国产欧美综合在线观看第十页 | 日韩手机在线导航| 亚洲无人区一区| 91视频在线观看| 国产精品免费久久| 国产91精品免费| 欧美激情在线一区二区三区| 国产成人免费xxxxxxxx| 久久久久成人黄色影片| 国产在线精品不卡| 欧美xxx久久| 麻豆视频观看网址久久| 欧美一区二区女人| 另类的小说在线视频另类成人小视频在线 | 顶级嫩模精品视频在线看| 欧美岛国在线观看| 久久爱另类一区二区小说| 日韩三级高清在线| 日韩精品乱码av一区二区| 制服.丝袜.亚洲.中文.综合| 天天操天天色综合| 欧美久久婷婷综合色| 日本网站在线观看一区二区三区| 51精品国自产在线| 日本大胆欧美人术艺术动态 | 亚洲黄色免费网站| 91精品国模一区二区三区| 国产精品小仙女| 婷婷亚洲久悠悠色悠在线播放| 亚洲国产精品高清| 制服丝袜国产精品| 欧美大尺度电影在线| 国产精品久久久久影院| 国产69精品久久久久毛片 | 国产麻豆精品视频| 爽好多水快深点欧美视频| 一区二区三区四区中文字幕| 精品成人佐山爱一区二区| 亚洲蜜桃精久久久久久久| 亚洲三级在线看| 亚洲另类中文字| 精品国产欧美一区二区| 国产69精品久久久久毛片| 免费成人在线观看视频| 日韩理论片在线| 欧美精品123区| 成人av电影在线| 免费看日韩精品| 亚洲综合色在线| 亚洲国产成人高清精品| 精品国产免费视频| 欧美精品丝袜久久久中文字幕| 国产午夜精品久久久久久久 | 国产成人日日夜夜| 亚洲蜜桃精久久久久久久| 久久日一线二线三线suv| 久久久不卡网国产精品二区| 久久精品人人做人人综合| 欧美一区二区在线不卡| av中文字幕亚洲| 99综合电影在线视频| 成人深夜福利app| 国产一区二区视频在线播放| 成人国产电影网| 黄色日韩三级电影| 日韩中文字幕91| 日韩成人午夜电影| 免费看欧美美女黄的网站| 亚洲国产精品人人做人人爽| 亚洲一区二区欧美日韩| 亚洲一区二区三区四区五区黄| 亚洲色图在线播放| 国产精品久久久久天堂| 国产亚洲污的网站| 中文字幕亚洲精品在线观看| 国产精品私人影院| 亚洲一区二区三区四区的| 麻豆精品一区二区综合av| 成人免费精品视频| 99精品一区二区三区| 一本色道久久综合亚洲精品按摩| 成人一道本在线| 91精品国产色综合久久不卡电影| 久久网这里都是精品| 高清不卡一区二区| 亚洲私人黄色宅男| 日韩美一区二区三区| 色av一区二区| 国产成人精品免费看| 日韩av午夜在线观看| 亚洲欧美激情小说另类| 久久免费午夜影院| 欧美一区二区人人喊爽| 成人黄色免费短视频| 蜜桃av一区二区三区电影| 一区二区三区久久久| 国产女同互慰高潮91漫画| 日韩色在线观看| 欧美日韩激情在线| 色中色一区二区| www.成人网.com| 福利电影一区二区| 久久福利视频一区二区| 亚洲成人免费影院| 亚洲欧美日韩电影| 国产精品素人一区二区| 亚洲精品一区在线观看| 欧美年轻男男videosbes| 色女孩综合影院| 成人黄色国产精品网站大全在线免费观看 | 精品日韩av一区二区| 欧美日本一区二区三区| 欧美三级中文字幕在线观看| 97se亚洲国产综合自在线不卡| 粉嫩av一区二区三区粉嫩| 激情图区综合网| 老司机免费视频一区二区三区| 日韩电影在线观看电影| 香蕉成人啪国产精品视频综合网| 亚洲日本成人在线观看| 日韩一区在线看| 国产精品色婷婷| 中文字幕亚洲不卡| 亚洲天堂免费在线观看视频| 国产精品久久久久毛片软件| 国产精品久久久久永久免费观看| 国产精品区一区二区三区| 国产色产综合色产在线视频| 国产视频一区二区在线| 亚洲国产成人私人影院tom| 久久精品无码一区二区三区| 欧美国产一区视频在线观看| 中文av一区特黄| 国产午夜精品一区二区| 国产精品网友自拍| 亚洲人精品午夜| 一区二区三区四区在线免费观看| 一区二区三国产精华液| 性做久久久久久免费观看欧美| 偷偷要91色婷婷| 卡一卡二国产精品 | 欧美成人一区二区三区片免费| 日韩精品一区二区三区在线| 精品国产一区a| 久久久久88色偷偷免费| 国产精品天天看| 亚洲精品国久久99热|