1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4882a593Smuzhiyun #ifndef __LINUX_ROMFS_FS_H 3*4882a593Smuzhiyun #define __LINUX_ROMFS_FS_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <linux/types.h> 6*4882a593Smuzhiyun #include <linux/fs.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* The basic structures of the romfs filesystem */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #define ROMBSIZE BLOCK_SIZE 11*4882a593Smuzhiyun #define ROMBSBITS BLOCK_SIZE_BITS 12*4882a593Smuzhiyun #define ROMBMASK (ROMBSIZE-1) 13*4882a593Smuzhiyun #define ROMFS_MAGIC 0x7275 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #define ROMFS_MAXFN 128 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define __mkw(h,l) (((h)&0x00ff)<< 8|((l)&0x00ff)) 18*4882a593Smuzhiyun #define __mkl(h,l) (((h)&0xffff)<<16|((l)&0xffff)) 19*4882a593Smuzhiyun #define __mk4(a,b,c,d) cpu_to_be32(__mkl(__mkw(a,b),__mkw(c,d))) 20*4882a593Smuzhiyun #define ROMSB_WORD0 __mk4('-','r','o','m') 21*4882a593Smuzhiyun #define ROMSB_WORD1 __mk4('1','f','s','-') 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun /* On-disk "super block" */ 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun struct romfs_super_block { 26*4882a593Smuzhiyun __be32 word0; 27*4882a593Smuzhiyun __be32 word1; 28*4882a593Smuzhiyun __be32 size; 29*4882a593Smuzhiyun __be32 checksum; 30*4882a593Smuzhiyun char name[0]; /* volume name */ 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun /* On disk inode */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun struct romfs_inode { 36*4882a593Smuzhiyun __be32 next; /* low 4 bits see ROMFH_ */ 37*4882a593Smuzhiyun __be32 spec; 38*4882a593Smuzhiyun __be32 size; 39*4882a593Smuzhiyun __be32 checksum; 40*4882a593Smuzhiyun char name[0]; 41*4882a593Smuzhiyun }; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #define ROMFH_TYPE 7 44*4882a593Smuzhiyun #define ROMFH_HRD 0 45*4882a593Smuzhiyun #define ROMFH_DIR 1 46*4882a593Smuzhiyun #define ROMFH_REG 2 47*4882a593Smuzhiyun #define ROMFH_SYM 3 48*4882a593Smuzhiyun #define ROMFH_BLK 4 49*4882a593Smuzhiyun #define ROMFH_CHR 5 50*4882a593Smuzhiyun #define ROMFH_SCK 6 51*4882a593Smuzhiyun #define ROMFH_FIF 7 52*4882a593Smuzhiyun #define ROMFH_EXEC 8 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun /* Alignment */ 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun #define ROMFH_SIZE 16 57*4882a593Smuzhiyun #define ROMFH_PAD (ROMFH_SIZE-1) 58*4882a593Smuzhiyun #define ROMFH_MASK (~ROMFH_PAD) 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun #endif 61