61 lines · c
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */2#ifndef __LINUX_ROMFS_FS_H3#define __LINUX_ROMFS_FS_H4 5#include <linux/types.h>6#include <linux/fs.h>7 8/* The basic structures of the romfs filesystem */9 10#define ROMBSIZE BLOCK_SIZE11#define ROMBSBITS BLOCK_SIZE_BITS12#define ROMBMASK (ROMBSIZE-1)13#define ROMFS_MAGIC 0x727514 15#define ROMFS_MAXFN 12816 17#define __mkw(h,l) (((h)&0x00ff)<< 8|((l)&0x00ff))18#define __mkl(h,l) (((h)&0xffff)<<16|((l)&0xffff))19#define __mk4(a,b,c,d) cpu_to_be32(__mkl(__mkw(a,b),__mkw(c,d)))20#define ROMSB_WORD0 __mk4('-','r','o','m')21#define ROMSB_WORD1 __mk4('1','f','s','-')22 23/* On-disk "super block" */24 25struct romfs_super_block {26 __be32 word0;27 __be32 word1;28 __be32 size;29 __be32 checksum;30 char name[]; /* volume name */31};32 33/* On disk inode */34 35struct romfs_inode {36 __be32 next; /* low 4 bits see ROMFH_ */37 __be32 spec;38 __be32 size;39 __be32 checksum;40 char name[];41};42 43#define ROMFH_TYPE 744#define ROMFH_HRD 045#define ROMFH_DIR 146#define ROMFH_REG 247#define ROMFH_SYM 348#define ROMFH_BLK 449#define ROMFH_CHR 550#define ROMFH_SCK 651#define ROMFH_FIF 752#define ROMFH_EXEC 853 54/* Alignment */55 56#define ROMFH_SIZE 1657#define ROMFH_PAD (ROMFH_SIZE-1)58#define ROMFH_MASK (~ROMFH_PAD)59 60#endif61