17#ifndef __JFFS2_OS_RTEMS_H__
18#define __JFFS2_OS_RTEMS_H__
20#include <asm/atomic.h>
22#include <linux/compiler.h>
23#include <linux/list.h>
24#include <linux/pagemap.h>
25#include <linux/stat.h>
26#include <linux/types.h>
34#include <rtems/jffs2.h>
35#include <rtems/thread.h>
37#define CONFIG_JFFS2_RTIME
39#define CONFIG_JFFS2_ZLIB
44static inline unsigned int full_name_hash(
const void *salt,
const unsigned char * name,
size_t len) {
49 hash = (hash << 4) | (hash >> 28);
56#define jffs2_can_mark_obsolete(c) (1)
58#define JFFS2_INODE_INFO(i) (&(i)->jffs2_i)
59#define OFNI_EDONI_2SFFJ(f) ((struct _inode *) ( ((char *)f) - ((char *)(&((struct _inode *)NULL)->jffs2_i)) ) )
61#define ITIME(sec) (sec)
64#define JFFS2_F_I_SIZE(f) (OFNI_EDONI_2SFFJ(f)->i_size)
65#define JFFS2_F_I_MODE(f) (OFNI_EDONI_2SFFJ(f)->i_mode)
66#define JFFS2_F_I_UID(f) (OFNI_EDONI_2SFFJ(f)->i_uid)
67#define JFFS2_F_I_GID(f) (OFNI_EDONI_2SFFJ(f)->i_gid)
68#define JFFS2_F_I_CTIME(f) (OFNI_EDONI_2SFFJ(f)->i_ctime)
69#define JFFS2_F_I_MTIME(f) (OFNI_EDONI_2SFFJ(f)->i_mtime)
70#define JFFS2_F_I_ATIME(f) (OFNI_EDONI_2SFFJ(f)->i_atime)
72#define get_seconds() time(NULL)
86 unsigned short i_rdev;
95 struct _inode * i_cache_prev;
96 struct _inode * i_cache_next;
99#define JFFS2_SB_INFO(sb) (&(sb)->jffs2_sb)
100#define OFNI_BS_2SFFJ(c) ((struct super_block *) ( ((char *)c) - ((char *)(&((struct super_block *)NULL)->jffs2_sb)) ) )
108 unsigned char s_gc_buffer[PAGE_CACHE_SIZE];
109 rtems_recursive_mutex s_mutex;
110 char s_name_buf[JFFS2_MAX_NAME_LEN];
113#define sleep_on_spinunlock(wq, sl) spin_unlock(sl)
120 return sb->s_is_readonly;
123static inline void jffs2_garbage_collect_trigger(
struct jffs2_sb_info *c)
136void jffs2_iput(
struct _inode * i);
140 unsigned long offset,
unsigned long *priv);
141void jffs2_gc_release_page(
struct jffs2_sb_info *c,
unsigned char *pg,
unsigned long *priv);
144#define os_to_jffs2_mode(x) jffs2_from_os_mode(x)
145static inline uint32_t jffs2_from_os_mode(uint32_t osmode)
147 return osmode & (S_IFMT | S_IRWXU | S_IRWXG | S_IRWXO);
150static inline uint32_t jffs2_to_os_mode (uint32_t jmode)
152 return jmode & (S_IFMT | S_IRWXU | S_IRWXG | S_IRWXO);
157int jffs2_flash_read(
struct jffs2_sb_info *c, cyg_uint32 read_buffer_offset,
158 const size_t size,
size_t * return_size,
unsigned char * write_buffer);
159int jffs2_flash_write(
struct jffs2_sb_info *c, cyg_uint32 write_buffer_offset,
160 const size_t size,
size_t * return_size,
unsigned char * read_buffer);
161int jffs2_flash_direct_writev(
struct jffs2_sb_info *c,
const struct iovec *vecs,
162 unsigned long count, loff_t to,
size_t *retlen);
166struct _inode *jffs2_lookup(
struct _inode *dir_i,
const unsigned char *name,
size_t namelen);
167int jffs2_create(
struct _inode *dir_i,
const char *d_name,
size_t d_namelen,
int mode);
168int jffs2_mknod(
struct _inode *dir_i,
const unsigned char *d_name,
size_t d_namelen,
int mode,
const unsigned char *data,
size_t datalen);
169int jffs2_link (
struct _inode *old_d_inode,
struct _inode *dir_i,
const unsigned char *d_name,
size_t d_namelen);
170int jffs2_unlink(
struct _inode *dir_i,
struct _inode *d_inode,
const unsigned char *d_name,
size_t d_namelen);
171int jffs2_rmdir (
struct _inode *dir_i,
struct _inode *d_inode,
const unsigned char *d_name,
size_t d_namelen);
172int jffs2_rename (
struct _inode *old_dir_i,
struct _inode *d_inode,
const unsigned char *old_d_name,
size_t old_d_namelen,
173 struct _inode *new_dir_i,
const unsigned char *new_d_name,
size_t new_d_namelen);
176static inline void jffs2_erase_pending_trigger(
struct jffs2_sb_info *c)
179#ifndef CONFIG_JFFS2_FS_WRITEBUFFER
180#define SECTOR_ADDR(x) ( ((unsigned long)(x) & ~(c->sector_size-1)) )
181#define jffs2_can_mark_obsolete(c) (1)
182#define jffs2_is_writebuffered(c) (0)
183#define jffs2_cleanmarker_oob(c) (0)
184#define jffs2_write_nand_cleanmarker(c,jeb) (-EIO)
186#define jffs2_flush_wbuf_pad(c) (c=c)
187#define jffs2_flush_wbuf_gc(c, i) ({ (void)(c), (void) i, 0; })
188#define jffs2_nand_read_failcnt(c,jeb) do { ; } while(0)
189#define jffs2_write_nand_badblock(c,jeb,p) (0)
190#define jffs2_flash_setup(c) (0)
191#define jffs2_nand_flash_cleanup(c) do {} while(0)
192#define jffs2_wbuf_dirty(c) (0)
193#define jffs2_flash_writev(a,b,c,d,e,f) jffs2_flash_direct_writev(a,b,c,d,e)
194#define jffs2_wbuf_timeout NULL
195#define jffs2_wbuf_process NULL
196#define jffs2_nor_ecc(c) (0)
202#define BUG_ON(x) do { if (unlikely(x)) BUG(); } while(0)
#define NULL
Requests a GPIO pin group configuration.
Definition: bestcomm_api.h:77
Definition: os-rtems.h:74
Definition: nodelist.h:278
Definition: nodelist.h:252
Definition: jffs2_fs_i.h:20
Definition: jffs2_fs_sb.h:48
JFFS2 compressor control.
Definition: jffs2.h:367
JFFS2 flash device control.
Definition: jffs2.h:249
rtems_jffs2_trigger_garbage_collection trigger_garbage_collection
Trigger garbage collection operation.
Definition: jffs2.h:300
Definition: os-rtems.h:102
unsigned size
Definition: tte.h:1