Fixes to ISOFS
This commit is contained in:
parent
471ad9384f
commit
cb6f6a94f7
6 changed files with 38 additions and 22 deletions
|
@ -281,6 +281,21 @@ driver mfs
|
||||||
uid 0;
|
uid 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
driver isofs
|
||||||
|
{
|
||||||
|
system
|
||||||
|
TIMES # 25
|
||||||
|
SAFECOPYFROM # 31
|
||||||
|
SAFECOPYTO # 32
|
||||||
|
GETINFO
|
||||||
|
SETGRANT # 34
|
||||||
|
UMAP # 14
|
||||||
|
PROFBUF # 38
|
||||||
|
SYSCTL
|
||||||
|
;
|
||||||
|
uid 0;
|
||||||
|
};
|
||||||
|
|
||||||
driver printer
|
driver printer
|
||||||
{
|
{
|
||||||
io 378:4 # LPT1
|
io 378:4 # LPT1
|
||||||
|
|
|
@ -18,6 +18,7 @@ all install depend clean:
|
||||||
cd ./pm && $(MAKE) $@
|
cd ./pm && $(MAKE) $@
|
||||||
cd ./vfs && $(MAKE) $@
|
cd ./vfs && $(MAKE) $@
|
||||||
cd ./mfs && $(MAKE) $@
|
cd ./mfs && $(MAKE) $@
|
||||||
|
cd ./iso9660fs && $(MAKE) $@
|
||||||
cd ./rs && $(MAKE) $@
|
cd ./rs && $(MAKE) $@
|
||||||
cd ./ds && $(MAKE) $@
|
cd ./ds && $(MAKE) $@
|
||||||
cd ./is && $(MAKE) $@
|
cd ./is && $(MAKE) $@
|
||||||
|
|
|
@ -29,20 +29,6 @@ PUBLIC int main(void) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (fs_m_in.m_type != REQ_READSUPER_O && fs_m_in.m_type != REQ_READSUPER_S) {
|
|
||||||
printf("ISO9660FS(%d): Invalid login reply\n", SELF_E);
|
|
||||||
return -1;
|
|
||||||
} else {
|
|
||||||
if (fs_m_in.m_type == REQ_READSUPER_S)
|
|
||||||
fs_m_out.m_type = fs_readsuper_s();
|
|
||||||
else
|
|
||||||
fs_m_out.m_type = fs_readsuper();
|
|
||||||
reply(FS_PROC_NR, &fs_m_out);
|
|
||||||
if (fs_m_out.m_type != OK) return -1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
|
||||||
/* Wait for request message. */
|
/* Wait for request message. */
|
||||||
|
@ -69,8 +55,6 @@ PUBLIC int main(void) {
|
||||||
ind= req_nr-VFS_BASE;
|
ind= req_nr-VFS_BASE;
|
||||||
|
|
||||||
if (ind < 0 || ind >= NREQS) {
|
if (ind < 0 || ind >= NREQS) {
|
||||||
printf("iso9660fs: bad request %d\n", req_nr);
|
|
||||||
printf("ind = %d\n", ind);
|
|
||||||
error = EINVAL;
|
error = EINVAL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -79,7 +63,6 @@ PUBLIC int main(void) {
|
||||||
|
|
||||||
fs_m_out.m_type = error;
|
fs_m_out.m_type = error;
|
||||||
reply(who_e, &fs_m_out); /* returns the response to VFS */
|
reply(who_e, &fs_m_out); /* returns the response to VFS */
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ int fs_sync(void);
|
||||||
int lookup(void);
|
int lookup(void);
|
||||||
int fs_access(void);
|
int fs_access(void);
|
||||||
int fs_getdents(void);
|
int fs_getdents(void);
|
||||||
|
int fs_getdents_o(void);
|
||||||
|
|
||||||
/* main.c */
|
/* main.c */
|
||||||
_PROTOTYPE( int main, (void) );
|
_PROTOTYPE( int main, (void) );
|
||||||
|
|
|
@ -269,7 +269,6 @@ PUBLIC int fs_getdents(void) {
|
||||||
dir_tmp = get_free_dir_record();
|
dir_tmp = get_free_dir_record();
|
||||||
create_dir_record(dir_tmp,bp->b_data + block_pos,
|
create_dir_record(dir_tmp,bp->b_data + block_pos,
|
||||||
block*block_size + block_pos);
|
block*block_size + block_pos);
|
||||||
|
|
||||||
if (dir_tmp->length == 0) { /* EOF. I exit and return 0s */
|
if (dir_tmp->length == 0) { /* EOF. I exit and return 0s */
|
||||||
block_pos = block_size;
|
block_pos = block_size;
|
||||||
done = TRUE;
|
done = TRUE;
|
||||||
|
@ -316,7 +315,6 @@ PUBLIC int fs_getdents(void) {
|
||||||
if (tmpbuf_offset + reclen > GETDENTS_BUFSIZ) {
|
if (tmpbuf_offset + reclen > GETDENTS_BUFSIZ) {
|
||||||
r= sys_safecopyto(FS_PROC_NR, gid, userbuf_off,
|
r= sys_safecopyto(FS_PROC_NR, gid, userbuf_off,
|
||||||
(vir_bytes)getdents_buf, tmpbuf_offset, D);
|
(vir_bytes)getdents_buf, tmpbuf_offset, D);
|
||||||
|
|
||||||
if (r != OK)
|
if (r != OK)
|
||||||
panic(__FILE__,"fs_getdents: sys_safecopyto failed\n",r);
|
panic(__FILE__,"fs_getdents: sys_safecopyto failed\n",r);
|
||||||
|
|
||||||
|
@ -348,7 +346,6 @@ PUBLIC int fs_getdents(void) {
|
||||||
|
|
||||||
block++; /* read the next one */
|
block++; /* read the next one */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tmpbuf_offset != 0) {
|
if (tmpbuf_offset != 0) {
|
||||||
r= sys_safecopyto(FS_PROC_NR, gid, userbuf_off,
|
r= sys_safecopyto(FS_PROC_NR, gid, userbuf_off,
|
||||||
(vir_bytes)getdents_buf, tmpbuf_offset, D);
|
(vir_bytes)getdents_buf, tmpbuf_offset, D);
|
||||||
|
@ -361,11 +358,28 @@ PUBLIC int fs_getdents(void) {
|
||||||
r= ENOSYS;
|
r= ENOSYS;
|
||||||
fs_m_out.RES_GDE_POS_CHANGE= 0; /* No change in case of an error */
|
fs_m_out.RES_GDE_POS_CHANGE= 0; /* No change in case of an error */
|
||||||
|
|
||||||
r= userbuf_off;
|
/* r= userbuf_off;*/
|
||||||
|
fs_m_out.RES_GDE_CUM_IO = userbuf_off;
|
||||||
if (cur_pos >= pos)
|
if (cur_pos >= pos)
|
||||||
fs_m_out.RES_GDE_POS_CHANGE= cur_pos-pos;
|
fs_m_out.RES_GDE_POS_CHANGE= cur_pos-pos;
|
||||||
|
else
|
||||||
|
fs_m_out.RES_GDE_POS_CHANGE= 0;
|
||||||
|
|
||||||
release_dir_record(dir); /* release the inode */
|
release_dir_record(dir); /* release the inode */
|
||||||
|
r= OK;
|
||||||
|
return(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*===========================================================================*
|
||||||
|
* fs_getdents_s *
|
||||||
|
*===========================================================================*/
|
||||||
|
PUBLIC int fs_getdents_o(void)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
r = fs_getdents();
|
||||||
|
|
||||||
|
if(r == OK)
|
||||||
|
r = fs_m_out.RES_GDE_CUM_IO;
|
||||||
|
|
||||||
return(r);
|
return(r);
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ PUBLIC _PROTOTYPE (int (*fs_call_vec[]), (void) ) = {
|
||||||
fs_new_driver, /* 37 */
|
fs_new_driver, /* 37 */
|
||||||
fs_bread, /* 38 */
|
fs_bread, /* 38 */
|
||||||
no_sys, /* 39 */
|
no_sys, /* 39 */
|
||||||
fs_getdents, /* 40 */
|
fs_getdents_o, /* 40 */
|
||||||
no_sys, /* 41: not_used */
|
no_sys, /* 41: not_used */
|
||||||
fs_read_s, /* 42 */
|
fs_read_s, /* 42 */
|
||||||
no_sys, /* 43: not used */
|
no_sys, /* 43: not used */
|
||||||
|
@ -61,4 +61,6 @@ PUBLIC _PROTOTYPE (int (*fs_call_vec[]), (void) ) = {
|
||||||
fs_mountpoint_s, /* 50 */
|
fs_mountpoint_s, /* 50 */
|
||||||
fs_readsuper_s, /* 51 */
|
fs_readsuper_s, /* 51 */
|
||||||
no_sys, /* 52: not used */
|
no_sys, /* 52: not used */
|
||||||
|
no_sys, /* 53 */
|
||||||
|
fs_getdents, /* 54 */
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue