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

📄 fs_misc.cpp

📁 JFFS的源代码
💻 CPP
字号:
#include <stdlib.h>
//#include "../lib/lib.h"
#include "../jffs/jffstypes.h"
#include "../jffs/fs.h"


unsigned long CURRENT_TIME;	/*TODO*/
struct inode I_RAM;		

extern struct inode I_ROOT;
extern struct inode I_FLASH;	
extern struct inode I_FTU_PARA;
extern struct inode I_YC_PARA;	
extern struct file files_fd[NR_OPEN]; /*静态分配空间*/
extern struct inode files_inode[NR_OPEN];
extern fd_set files_open_fds;

struct fs_struct current_fs;

int flash_init(void);
int init_jffs_fs(void);
int init_root(void);
int init_para_fs(void);
int para_list_init(void);

int init_fs(void)
{
	int i;
		
	for(i=0;i<NR_OPEN;i++) 
		files_fd[i].f_inode = &files_inode[i]; /*!!!*/
	FD_SET(0, &files_open_fds);

	flash_init(); 	
	init_jffs_fs();	

	current_fs.root = &I_FLASH;
	
	return 0;
}

/*来自asm-68knomem -> bitops.h*/
/* find_next_zero_bit() finds the first zero bit in a bit string of length
 * 'size' bits, starting the search at bit 'offset'. This is largely based
 * on Linus's ALPHA routines, which are pretty portable BTW.
 */
unsigned long ffz(unsigned long word)
{
	unsigned long result = 0;

	while(word & 1) {
		result++;
		word >>= 1;
	}
	return result;
}

unsigned long find_next_zero_bit(void *addr, unsigned long size, unsigned long offset)
{
	unsigned long *p = ((unsigned long *) addr) + (offset >> 5);
	unsigned long result = offset & ~31UL;
	unsigned long tmp;
	unsigned long temp;

	if (offset >= size)
		return size;
	size -= result;
	offset &= 31UL;
	if (offset) {
		tmp = *(p++);
		tmp |= ~0UL >> (32-offset);
		if (size < 32)
			goto found_first;
		if (~tmp)
			goto found_middle;
		size -= 32;
		result += 32;
	}
	while (size & ~31UL) {
		if (~(tmp = *(p++)))
			goto found_middle;
		result += 32;
		size -= 32;
	}
	if (!size)
		return result;
	tmp = *p;

	temp = ~0UL;	/*可能因为高低字节不同*/
found_first:
	tmp |= temp << size; /*???*/
found_middle:
	return result + ffz(tmp); 
}

void kfree( void *p )
{
	free(p);
}

void *kmalloc(unsigned long size, char x)
{
	return malloc(size);
}

⌨️ 快捷键说明

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