4.115
Last change
on this file since da154e14 was
da154e14,
checked in by Sebastian Huber <sebastian.huber@…>, on 05/14/12 at 14:55:41
|
Filesystem: Move operations to mount table entry
The scope of the file system operations is the file system instance.
The scope of the file system node handlers is the file location. The
benefit of moving the operations to the mount table entry is a size
reduction of the file location (rtems_filesystem_location_info_t). The
code size is slightly increased due to additional load instructions.
Restructure rtems_filesystem_mount_table_entry_t to improve cache
efficiency.
|
-
Property mode set to
100644
|
File size:
1.3 KB
|
Line | |
---|
1 | /* |
---|
2 | * rmdir() - POSIX 1003.1b - 5.2.2 - Remove a Directory |
---|
3 | * |
---|
4 | * COPYRIGHT (c) 1989-1999. |
---|
5 | * On-Line Applications Research Corporation (OAR). |
---|
6 | * |
---|
7 | * The license and distribution terms for this file may be |
---|
8 | * found in the file LICENSE in this distribution or at |
---|
9 | * http://www.rtems.com/license/LICENSE. |
---|
10 | */ |
---|
11 | |
---|
12 | #if HAVE_CONFIG_H |
---|
13 | #include "config.h" |
---|
14 | #endif |
---|
15 | |
---|
16 | #include <unistd.h> |
---|
17 | |
---|
18 | #include <rtems/libio_.h> |
---|
19 | |
---|
20 | int rmdir( const char *path ) |
---|
21 | { |
---|
22 | int rv = 0; |
---|
23 | rtems_filesystem_eval_path_context_t ctx; |
---|
24 | int eval_flags = RTEMS_FS_REJECT_TERMINAL_DOT; |
---|
25 | rtems_filesystem_location_info_t parentloc; |
---|
26 | int parent_eval_flags = RTEMS_FS_PERMS_WRITE |
---|
27 | | RTEMS_FS_PERMS_EXEC |
---|
28 | | RTEMS_FS_FOLLOW_LINK; |
---|
29 | const rtems_filesystem_location_info_t *currentloc = |
---|
30 | rtems_filesystem_eval_path_start_with_parent( |
---|
31 | &ctx, |
---|
32 | path, |
---|
33 | eval_flags, |
---|
34 | &parentloc, |
---|
35 | parent_eval_flags |
---|
36 | ); |
---|
37 | const rtems_filesystem_operations_table *ops = currentloc->mt_entry->ops; |
---|
38 | rtems_filesystem_node_types_t type = (*ops->node_type_h)( currentloc ); |
---|
39 | |
---|
40 | if ( type == RTEMS_FILESYSTEM_DIRECTORY ) { |
---|
41 | rv = (*ops->rmnod_h)( &parentloc, currentloc ); |
---|
42 | } else { |
---|
43 | rtems_filesystem_eval_path_error( &ctx, ENOTDIR ); |
---|
44 | rv = -1; |
---|
45 | } |
---|
46 | |
---|
47 | rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc ); |
---|
48 | |
---|
49 | return rv; |
---|
50 | } |
---|
Note: See
TracBrowser
for help on using the repository browser.