Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
iso9660.h
Go to the documentation of this file.
1#ifndef __FS__ISO9660_H__
2#define __FS__ISO9660_H__
5#include "vfs/vnode.h"
6#include <type.h>
8typedef struct {
9 uint32_t le; // little endian
10 uint32_t be; // big endian
13typedef struct {
18// Struktur Primary Volume Descriptor (PVD)
20 uint8_t type; // harus = 1 untuk PVD
21 char id[5]; // "CD001"
22 uint8_t version; // harus = 1
24
25 char system_id[32]; // strA
26 char volume_id[32]; // strD
27
29
30 both_u32 volume_space_size; // jumlah logical blocks
37
40 uint32_t l_path_table_loc; // LBA lokasi type-L path table
42 uint32_t m_path_table_loc; // LBA lokasi type-M path table
45 // Root directory record
46 // Struktur ini sebenarnya “Directory Record” dengan panjang tetap 34
47 // byte pada PVD
49
50 char volume_set_id[128];
51 char publisher_id[128];
53 char application_id[128];
57
58 // Tanggal/waktu (dec-datetime), 17 byte tiap field
59 char creation_date[17];
63
66
69} __attribute__((packed));
70
71// Struktur Path Table Entry
75 uint32_t extent_location; // LBA, little-endian di L-Table
76 uint16_t parent_dir_number; // indeks parent directory dalam path table
77 // lalu: char dir_identifier[dir_id_len];
78 // lalu padding byte jika diperlukan agar entry genap
79};
80
81// Struktur Date/Time pada Directory Record
83 uint8_t year; // tahun sejak 1900
89 int8_t gmt_offset; // offset dari GMT dalam interval 15 menit
90};
91
92// Struktur Directory Record (Entry direktori / file)
117
118#define iOS9660_DIR_FLAG (1 << 1)
119#define iOS9660_ASSOCIATED_FILE_FLAG (1 << 2)
120
124
125
127 dentry_ptr* out);
128int iso9660_read(vnode_t* vnode, void* buf, size_t len, size_t offset);
129int iso9660_readlink(vnode_t* vnode, char* buf, size_t len);
130
131#endif // __FS__ISO9660_H__
static AHCIModule instance
Definition init.cpp:5
struct dentry * dentry_ptr
Definition dentry.h:20
dentry_ptr parent
Definition dentry.h:7
struct vnode vnode_t
Definition filesystem.h:10
struct fs_operations fs_operations_t
fs_operations_t * iso9660_fs_operations(void)
Definition iso9660.c:437
vops_file_t * iso9660_file_operations(void)
Definition iso9660.c:432
int iso9660_lookup(struct fs_instance *instance, char *path, dentry_ptr parent, dentry_ptr *out)
Definition iso9660.c:140
vops_lnk_t * iso9660_lnk_operations(void)
Definition iso9660.c:442
int iso9660_readlink(vnode_t *vnode, char *buf, size_t len)
Definition iso9660.c:419
struct iso9660_path_table_entry __attribute__
int iso9660_read(vnode_t *vnode, void *buf, size_t len, size_t offset)
Definition iso9660.c:389
size_t len
Definition oct2bin.h:7
uint16_t be
Definition iso9660.h:15
uint16_t le
Definition iso9660.h:14
uint32_t le
Definition iso9660.h:9
uint32_t be
Definition iso9660.h:10
uint8_t minute
Definition iso9660.h:87
uint8_t year
Definition iso9660.h:83
int8_t gmt_offset
Definition iso9660.h:89
uint8_t day
Definition iso9660.h:85
uint8_t second
Definition iso9660.h:88
uint8_t hour
Definition iso9660.h:86
uint8_t month
Definition iso9660.h:84
uint8_t name_len
Definition iso9660.h:113
uint8_t ext_attr_length
Definition iso9660.h:95
uint8_t date[7]
Definition iso9660.h:103
uint32_t extent_le
Definition iso9660.h:97
uint8_t interleave_gap
Definition iso9660.h:108
uint16_t volume_seq_be
Definition iso9660.h:111
uint16_t volume_seq_le
Definition iso9660.h:110
uint8_t length
Definition iso9660.h:94
uint8_t file_unit_size
Definition iso9660.h:107
uint32_t size_be
Definition iso9660.h:101
uint32_t extent_be
Definition iso9660.h:98
uint8_t flags
Definition iso9660.h:105
uint32_t size_le
Definition iso9660.h:100
char name[]
Definition iso9660.h:115
Definition iso9660.h:72
uint16_t parent_dir_number
Definition iso9660.h:76
uint32_t extent_location
Definition iso9660.h:75
uint8_t ext_attr_rec_len
Definition iso9660.h:74
uint8_t dir_id_len
Definition iso9660.h:73
char effective_date[17]
Definition iso9660.h:62
uint8_t reserved[653]
Definition iso9660.h:68
char volume_set_id[128]
Definition iso9660.h:50
char abstract_file_id[37]
Definition iso9660.h:55
uint8_t version
Definition iso9660.h:22
uint8_t unused3[32]
Definition iso9660.h:32
char system_id[32]
Definition iso9660.h:25
both_u32 volume_space_size
Definition iso9660.h:30
uint8_t type
Definition iso9660.h:20
char modification_date[17]
Definition iso9660.h:60
char copyright_file_id[37]
Definition iso9660.h:54
uint8_t application_data[512]
Definition iso9660.h:67
uint32_t opt_m_path_table_loc
Definition iso9660.h:43
char application_id[128]
Definition iso9660.h:53
char volume_id[32]
Definition iso9660.h:26
both_u16 volume_sequence_number
Definition iso9660.h:35
uint8_t unused4
Definition iso9660.h:65
both_u16 logical_block_size
Definition iso9660.h:36
char publisher_id[128]
Definition iso9660.h:51
both_u32 path_table_size
Definition iso9660.h:38
uint32_t m_path_table_loc
Definition iso9660.h:42
char data_preparer_id[128]
Definition iso9660.h:52
uint8_t unused1
Definition iso9660.h:23
char bibliographic_file_id[37]
Definition iso9660.h:56
uint8_t file_structure_version
Definition iso9660.h:64
uint32_t l_path_table_loc
Definition iso9660.h:40
char creation_date[17]
Definition iso9660.h:59
uint8_t unused2[8]
Definition iso9660.h:28
both_u16 volume_set_size
Definition iso9660.h:34
char expiration_date[17]
Definition iso9660.h:61
uint8_t root_dir_record[34]
Definition iso9660.h:48
uint32_t opt_l_path_table_loc
Definition iso9660.h:41
Definition vnode.h:59
unsigned short uint16_t
Definition type.h:13
unsigned int uint32_t
Definition type.h:19
unsigned char uint8_t
Definition type.h:7
signed char int8_t
Definition type.h:31
uint32_t offset
Definition virtio.h:6
kstring path
Definition voxmo.h:7