Ignore:
Timestamp:
Jul 8, 2015, 3:40:18 PM (9 years ago)
Author:
alain
Message:

1) Fix a bug in the free() function in the malloc.c
2) Introduce new syscalls to access the FAT in stdio.c

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_libs/stdio.c

    r581 r588  
    190190            {
    191191                int val = va_arg( *args, int );
    192                 if (modifiers != NO_MOD) goto return_error; //Modifiers have no meaning
     192                if (modifiers != NO_MOD) goto return_error; // Modifiers have no meaning
    193193               
    194194                len = 1;
     
    201201                int val = va_arg( *args, int );
    202202               
    203                 if (modifiers == LL_MOD) goto return_error; //64 bits not supported
     203                if (modifiers == LL_MOD) goto return_error; // 64 bits not supported
    204204               
    205205                if (val < 0)
     
    290290                char* str = va_arg( *args, char* );
    291291               
    292                 if (modifiers != NO_MOD) goto return_error; //Modifiers have no meaning
     292                if (modifiers != NO_MOD) goto return_error; // Modifiers have no meaning
    293293               
    294294                while (str[len])
     
    879879///////////////////////////////////////////////////////////////////////////////////
    880880
    881 ///////////////////////////////////////////
    882 int giet_fat_open( const char*   pathname,
    883                    unsigned int  flags )
    884 {
    885     int ret = sys_call( SYSCALL_FAT_OPEN,
    886                         (unsigned int)pathname,
    887                         flags,
    888                         0, 0 );
    889     if ( ret < 0 ) giet_exit("error in giet_fat_open()");
    890     return ret;
    891 }
    892 
    893 ////////////////////////////////////
    894 void giet_fat_read( unsigned int fd,     
     881/////////////////////////////////////////
     882int giet_fat_open( char*        pathname,
     883                   unsigned int flags )
     884{
     885    return  sys_call( SYSCALL_FAT_OPEN,
     886                      (unsigned int)pathname,
     887                      flags,
     888                      0, 0 );
     889}
     890
     891/////////////////////////////////////////
     892int giet_fat_close( unsigned int fd_id )
     893{
     894    return  sys_call( SYSCALL_FAT_CLOSE,
     895                      fd_id,
     896                      0, 0, 0 );
     897}
     898
     899/////////////////////////////////////////////
     900int giet_fat_file_info( unsigned int  fd_id,
     901                        unsigned int* size,
     902                        unsigned int* offset )
     903{
     904    return sys_call( SYSCALL_FAT_FINFO,
     905                     fd_id,
     906                     (unsigned int)size,
     907                     (unsigned int)offset,
     908                     0 );
     909}
     910
     911///////////////////////////////////////
     912int giet_fat_read( unsigned int fd_id,     
     913                   void*        buffer,
     914                   unsigned int count ) 
     915{
     916    return sys_call( SYSCALL_FAT_READ,
     917                     fd_id,
     918                     (unsigned int)buffer,
     919                     count,
     920                     0 );
     921}
     922
     923////////////////////////////////////////
     924int giet_fat_write( unsigned int fd_id,
    895925                    void*        buffer,
    896                     unsigned int count, 
    897                     unsigned int offset )
    898 {
    899     if ( sys_call( SYSCALL_FAT_READ,
    900                    fd,
    901                    (unsigned int)buffer,
    902                    count,
    903                    offset ) != count ) giet_exit("ERROR in giet_fat_read()");
    904 }
    905 
    906 /////////////////////////////////////
    907 void giet_fat_write( unsigned int fd,
    908                      void*        buffer,
    909                      unsigned int count,
    910                      unsigned int offset )
    911 {
    912     if ( sys_call( SYSCALL_FAT_WRITE,
    913                    fd,
    914                    (unsigned int)buffer,
    915                    count,
    916                    offset ) != count ) giet_exit("ERROR in giet_fat_write()");
    917 }
    918 
    919 /* variant implementing the UNIX spec
    920 ///////////////////////////////////////////////////////////////////////////////////
    921 // This system call writes to a file identified by the "fd" file descriptor.
    922 // - "buffer" is the source buffer virtual address (must be word aligned).
    923 // - "count" is a number of bytes (must be multiple of 4).
    924 // It uses the implicit "lseek" pointer in file descriptor.
    925 ///////////////////////////////////////////////////////////////////////////////////
    926 void giet_fat_write( unsigned int fd,
    927                     void*        buffer,
    928                     unsigned int count )  // number of bytes
     926                    unsigned int count )
    929927{
    930928    return sys_call( SYSCALL_FAT_WRITE,
    931                      fd,
     929                     fd_id,
    932930                     (unsigned int)buffer,
    933                      count, 0 );
    934 }
    935 */
    936 
    937 /////////////////////////////////////
    938 void giet_fat_lseek( unsigned int fd,
     931                     count,
     932                     0 );
     933}
     934
     935////////////////////////////////////////
     936int giet_fat_lseek( unsigned int fd_id,
    939937                    unsigned int offset,
    940938                    unsigned int whence )
    941939{
    942     if ( sys_call( SYSCALL_FAT_LSEEK,
    943                    fd,
    944                    offset,
    945                    whence,
    946                    0 ) ) giet_exit("ERROR in giet_fat_lseek()");
    947 }
    948 
    949 //////////////////////////////////////
    950 void giet_fat_fstat( unsigned int fd )
    951 {
    952     if ( sys_call( SYSCALL_FAT_FSTAT,
    953                    fd,
    954                    0, 0, 0 ) )  giet_exit("ERROR in giet_fat_lseek()");
     940    return sys_call( SYSCALL_FAT_LSEEK,
     941                     fd_id,
     942                     offset,
     943                     whence,
     944                     0 );
     945}
     946
     947////////////////////////////////////////////
     948int giet_fat_remove( char*         pathname,
     949                     unsigned int  should_be_dir )
     950{
     951    return sys_call( SYSCALL_FAT_REMOVE,
     952                     (unsigned int)pathname,
     953                      should_be_dir,
     954                      0, 0 );
    955955}
    956956
    957957/////////////////////////////////////
    958 void giet_fat_close( unsigned int fd )
    959 {
    960     if ( sys_call( SYSCALL_FAT_CLOSE,
    961                    fd,
    962                    0, 0, 0 ) )  giet_exit("ERROR in giet_fat_close()");
    963 }
    964 
     958int giet_fat_rename( char*  old_path,
     959                     char*  new_path )
     960{
     961    return sys_call( SYSCALL_FAT_RENAME,
     962                     (unsigned int)old_path,
     963                     (unsigned int)new_path,
     964                      0, 0 );
     965}
     966
     967////////////////////////////////////
     968int giet_fat_mkdir( char* pathname )
     969{
     970    return sys_call( SYSCALL_FAT_MKDIR,
     971                     (unsigned int)pathname,
     972                      0, 0, 0 );
     973}
     974
     975/////////////////////////////////////
     976int giet_fat_list( char* pathname )
     977{
     978    return sys_call( SYSCALL_FAT_LIST,
     979                     (unsigned int)pathname,
     980                     0, 0, 0 );
     981}
    965982
    966983
Note: See TracChangeset for help on using the changeset viewer.