Changeset 2713 for trunk/src/lib


Ignore:
Timestamp:
Nov 21, 2013, 10:11:00 PM (12 years ago)
Author:
bird
Message:

Some unlink(), rmdir() and kmk_rm optimizations.

Location:
trunk/src/lib
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/Makefile.kmk

    r2702 r2713  
    4646       nt/nthlpfs.c \
    4747       nt/ntdir.c \
    48        nt/ntstat.c
     48       nt/ntstat.c \
     49       nt/ntunlink.c
    4950kUtil_SOURCES.solaris = \
    5051        restartable-syscall-wrappers.c
  • trunk/src/lib/nt/nthlp.h

    r2704 r2713  
    5959                              ULONG fCreateDisposition, ULONG fCreateOptions, ULONG fObjAttribs,
    6060                              MY_UNICODE_STRING *pNameUniStr);
     61MY_NTSTATUS birdOpenFileUniStr(MY_UNICODE_STRING *pNtPath, ACCESS_MASK fDesiredAccess, ULONG fFileAttribs,
     62                               ULONG fShareAccess, ULONG fCreateDisposition, ULONG fCreateOptions, ULONG fObjAttribs,
     63                               HANDLE *phFile);
    6164void        birdCloseFile(HANDLE hFile);
     65int         birdDosToNtPath(const char *pszPath, MY_UNICODE_STRING *pNtPath);
    6266void        birdFreeNtPath(MY_UNICODE_STRING *pNtPath);
    6367
  • trunk/src/lib/nt/nthlpcore.c

    r2703 r2713  
    4545MY_NTSTATUS (WINAPI *g_pfnNtCreateFile)(PHANDLE, MY_ACCESS_MASK, MY_OBJECT_ATTRIBUTES *, MY_IO_STATUS_BLOCK *,
    4646                                        PLARGE_INTEGER, ULONG, ULONG, ULONG, ULONG, PVOID, ULONG);
     47MY_NTSTATUS (WINAPI *g_pfnNtDeleteFile)(MY_OBJECT_ATTRIBUTES *);
    4748MY_NTSTATUS (WINAPI *g_pfnNtQueryInformationFile)(HANDLE, MY_IO_STATUS_BLOCK *, PVOID, LONG, MY_FILE_INFORMATION_CLASS);
    4849MY_NTSTATUS (WINAPI *g_pfnNtQueryVolumeInformationFile)(HANDLE, MY_IO_STATUS_BLOCK *, PVOID, LONG, MY_FS_INFORMATION_CLASS);
     
    5051                                                PVOID, ULONG, MY_FILE_INFORMATION_CLASS, BOOLEAN,
    5152                                                MY_UNICODE_STRING *, BOOLEAN);
     53MY_NTSTATUS (WINAPI *g_pfnNtSetInformationFile)(HANDLE, MY_IO_STATUS_BLOCK *, PVOID, LONG, MY_FILE_INFORMATION_CLASS);
    5254BOOLEAN     (WINAPI *g_pfnRtlDosPathNameToNtPathName_U)(PCWSTR, MY_UNICODE_STRING *, PCWSTR *, MY_RTL_RELATIVE_NAME_U *);
    5355MY_NTSTATUS (WINAPI *g_pfnRtlAnsiStringToUnicodeString)(MY_UNICODE_STRING *, MY_ANSI_STRING const *, BOOLEAN);
     
    6264    { (FARPROC *)&g_pfnNtClose,                         "NtClose" },
    6365    { (FARPROC *)&g_pfnNtCreateFile,                    "NtCreateFile" },
     66    { (FARPROC *)&g_pfnNtDeleteFile,                    "NtDeleteFile" },
    6467    { (FARPROC *)&g_pfnNtQueryInformationFile,          "NtQueryInformationFile" },
    6568    { (FARPROC *)&g_pfnNtQueryVolumeInformationFile,    "NtQueryVolumeInformationFile" },
    6669    { (FARPROC *)&g_pfnNtQueryDirectoryFile,            "NtQueryDirectoryFile" },
     70    { (FARPROC *)&g_pfnNtSetInformationFile,            "NtSetInformationFile" },
    6771    { (FARPROC *)&g_pfnRtlDosPathNameToNtPathName_U,    "RtlDosPathNameToNtPathName_U" },
    6872    { (FARPROC *)&g_pfnRtlAnsiStringToUnicodeString,    "RtlAnsiStringToUnicodeString" },
     
    137141    {
    138142        /* EPERM            =  1 */
     143        case STATUS_CANNOT_DELETE:
     144            errno = EPERM;
     145            break;
    139146        /* ENOENT           =  2 */
    140147        case STATUS_NOT_FOUND:
  • trunk/src/lib/nt/nthlpfs.c

    r2710 r2713  
    7878
    7979
    80 static int birdDosToNtPath(const char *pszPath, MY_UNICODE_STRING *pNtPath)
     80int birdDosToNtPath(const char *pszPath, MY_UNICODE_STRING *pNtPath)
    8181{
    8282    MY_NTSTATUS         rcNt;
     
    128128
    129129
    130 static MY_NTSTATUS birdOpenFileInternal(MY_UNICODE_STRING *pNtPath, ACCESS_MASK fDesiredAccess, ULONG fFileAttribs,
    131                                         ULONG fShareAccess, ULONG fCreateDisposition, ULONG fCreateOptions, ULONG fObjAttribs,
    132                                         HANDLE *phFile)
     130MY_NTSTATUS birdOpenFileUniStr(MY_UNICODE_STRING *pNtPath, ACCESS_MASK fDesiredAccess, ULONG fFileAttribs,
     131                               ULONG fShareAccess, ULONG fCreateDisposition, ULONG fCreateOptions, ULONG fObjAttribs,
     132                               HANDLE *phFile)
    133133{
    134134    MY_IO_STATUS_BLOCK      Ios;
     
    203203    {
    204204        HANDLE hFile;
    205         rcNt = birdOpenFileInternal(&NtPath, fDesiredAccess, fFileAttribs, fShareAccess,
    206                                     fCreateDisposition, fCreateOptions, fObjAttribs, &hFile);
     205        rcNt = birdOpenFileUniStr(&NtPath, fDesiredAccess, fFileAttribs, fShareAccess,
     206                                  fCreateDisposition, fCreateOptions, fObjAttribs, &hFile);
    207207        if (MY_NT_SUCCESS(rcNt))
    208208        {
     
    278278                 */
    279279                HANDLE hFile;
    280                 rcNt = birdOpenFileInternal(&NtPath, fDesiredAccess, fFileAttribs, fShareAccess,
    281                                             fCreateDisposition, fCreateOptions, fObjAttribs, &hFile);
     280                rcNt = birdOpenFileUniStr(&NtPath, fDesiredAccess, fFileAttribs, fShareAccess,
     281                                          fCreateDisposition, fCreateOptions, fObjAttribs, &hFile);
    282282                if (MY_NT_SUCCESS(rcNt))
    283283                {
  • trunk/src/lib/nt/ntstuff.h

    r2708 r2713  
    199199/** The sizeof(MY_FILE_NAMES_INFORMATION) without the FileName. */
    200200#define MIN_SIZEOF_MY_FILE_ID_FULL_DIR_INFORMATION  ( (size_t)&((MY_FILE_ID_FULL_DIR_INFORMATION *)0)->FileName )
     201
     202
     203typedef struct MY_FILE_DISPOSITION_INFORMATION
     204{
     205    BOOLEAN         DeleteFile;
     206} MY_FILE_DISPOSITION_INFORMATION;
    201207
    202208
     
    361367extern MY_NTSTATUS (WINAPI * g_pfnNtCreateFile)(PHANDLE, MY_ACCESS_MASK, MY_OBJECT_ATTRIBUTES *, MY_IO_STATUS_BLOCK *,
    362368                                                PLARGE_INTEGER, ULONG, ULONG, ULONG, ULONG, PVOID, ULONG);
     369extern MY_NTSTATUS (WINAPI * g_pfnNtDeleteFile)(MY_OBJECT_ATTRIBUTES *);
    363370extern MY_NTSTATUS (WINAPI * g_pfnNtQueryInformationFile)(HANDLE, MY_IO_STATUS_BLOCK *,
    364371                                                          PVOID, LONG, MY_FILE_INFORMATION_CLASS);
     
    368375                                                        PVOID, ULONG, MY_FILE_INFORMATION_CLASS, BOOLEAN,
    369376                                                        MY_UNICODE_STRING *, BOOLEAN);
     377extern MY_NTSTATUS (WINAPI * g_pfnNtSetInformationFile)(HANDLE, MY_IO_STATUS_BLOCK *, PVOID, LONG, MY_FILE_INFORMATION_CLASS);
    370378extern BOOLEAN     (WINAPI * g_pfnRtlDosPathNameToNtPathName_U)(PCWSTR, MY_UNICODE_STRING *, PCWSTR *, MY_RTL_RELATIVE_NAME_U *);
    371379extern MY_NTSTATUS (WINAPI * g_pfnRtlAnsiStringToUnicodeString)(MY_UNICODE_STRING *, MY_ANSI_STRING const *, BOOLEAN);
Note: See TracChangeset for help on using the changeset viewer.