VirtualBox

Changeset 4808

Show
Ignore:
Timestamp:
09/14/07 18:18:20 (1 year ago)
Author:
vboxsync
Message:

Added an RTErrnoConvertFromErr function to simplify error management inside the Linux Additions kernel modules

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/include/iprt/err.h

    r4475 r4808  
    147147 */ 
    148148RTDECL(int)  RTErrConvertFromWin32(unsigned uNativeCode); 
     149 
     150/** 
     151 * Converts an iprt status code to a Posix error code. 
     152 * 
     153 * @returns a Posix error code. 
     154 * @param   iErr    iprt status code. 
     155 */ 
     156RTDECL(unsigned)  RTErrnoConvertFromErr(int iErr); 
    149157 
    150158 
  • trunk/src/VBox/Additions/linux/Makefile.kmk

    r4709 r4808  
    4646# folders kernel modules. 
    4747$(PATH_BIN)/additions/VBoxLinuxAdditions.run: \ 
    48                 $(INSTARGET_vboxmod-bin) \ 
     48                $(PATH_OBJ)/src/VBox/Additions/linux/module/vboxadd/vboxadd$(TEMPLATE_VBOXLNX32GUESTR0_SYSSUFF) \ 
     49                $(PATH_OBJ)/src/VBox/Additions/linux/sharedfolders/vboxvfs/vboxvfs$(TEMPLATE_VBOXLNX32GUESTR0_SYSSUFF) \ 
    4950                $(PATH_BIN)/additions/vboxadd-timesync \ 
    5051                $(PATH_BIN)/additions/vboxadd-xclient \ 
  • trunk/src/VBox/Additions/linux/sharedfolders/Makefile.module

    r4739 r4808  
    3131        r0drv/linux/alloc-r0drv-linux.o \ 
    3232        r0drv/linux/semaphore-r0drv-linux.o \ 
     33        RTErrnoConvertFromErr.o \ 
    3334        divdi3.o \ 
    3435        moddi3.o \ 
  • trunk/src/VBox/Additions/linux/sharedfolders/dirops.c

    r4796 r4808  
    491491                LogFunc(("(%d): vboxCallRemove(%s) failed rc=%Vrc\n", dirop, 
    492492                         path->String.utf8, rc)); 
    493  
    494                 switch (rc) { 
    495                         case VERR_PATH_NOT_FOUND: 
    496                                 err = -ENOENT; 
    497                                 break; 
    498  
    499                         case VERR_DIR_NOT_EMPTY: 
    500                                 err = -ENOTEMPTY; 
    501                                 break; 
    502  
    503                         default: 
    504                                 err = -EPROTO; 
    505                                 LogFunc(("(%d): vboxCallRemove(%s) failed rc=%Vrc\n", dirop, 
    506                                          path->String.utf8, rc)); 
    507                                 break; 
    508                 } 
     493                         err = -RTErrnoConvertFromErr(rc); 
    509494                goto fail1; 
    510495        } 
     
    576561                        } else { 
    577562                                LogFunc(("vboxCallRename failed rc=%Vrc\n", rc)); 
    578                                 switch (rc) { 
    579                                 /** @todo we need a function to convert VBox error 
    580                                     codes back to Linux. */ 
    581                                 case VERR_ACCESS_DENIED: 
    582                                         err = -EACCES; 
    583                                         break; 
    584                                 case VERR_DEV_IO_ERROR: 
    585                                         err = -EBUSY; 
    586                                         break; 
    587                                 case VERR_INVALID_POINTER: 
    588                                         err = -EFAULT; 
    589                                         break; 
    590                                 case VERR_FILE_NOT_FOUND: 
    591                                 case VERR_PATH_NOT_FOUND: 
    592                                         err = -ENOENT; 
    593                                         break; 
    594                                 default: 
    595                                         err = -EPROTO; 
    596                                 } 
     563                                err = -RTErrnoConvertFromErr(err); 
    597564                        } 
    598565                        if (0 != err) { 
  • trunk/src/VBox/Additions/linux/sharedfolders/files_vboxvfs

    r4729 r4808  
    6464    ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/string.h=>r0drv/linux/string.h \ 
    6565    ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \ 
     66    ${PATH_ROOT}/src/VBox/Runtime/RTErrnoConvertFromErr.cpp=>RTErrnoConvertFromErr.c \ 
    6667    ${PATH_ROOT}/src/VBox/Additions/linux/sharedfolders/Makefile.module=>Makefile \ 
    6768    ${PATH_ROOT}/src/VBox/Additions/linux/sharedfolders/dirops.c=>dirops.c \ 
  • trunk/src/VBox/Additions/linux/sharedfolders/utils.c

    r4735 r4808  
    569569 
    570570                        default: 
    571                                 err = -EPROTO
     571                                err = -RTErrnoConvertFromErr(rc)
    572572                                LogFunc(("vboxCallDirInfo failed rc=%Vrc\n", rc)); 
    573573                                goto fail1; 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy