source: rtems/cpukit/libfs/src/rfs/rtems-rfs-mutex.c @ 0b8e827

4.104.115
Last change on this file since 0b8e827 was a9fa9b7, checked in by Chris Johns <chrisj@…>, on 02/18/10 at 00:24:25

2010-02-18 Chris Johns <chrisj@…>

  • libfs/src/rfs/rtems-rfs-bitmaps.c, libfs/src/rfs/rtems-rfs-bitmaps.h, libfs/src/rfs/rtems-rfs-bitmaps-ut.c, libfs/src/rfs/rtems-rfs-block.c, libfs/src/rfs/rtems-rfs-block.h, libfs/src/rfs/rtems-rfs-block-pos.h, libfs/src/rfs/rtems-rfs-buffer-bdbuf.c, libfs/src/rfs/rtems-rfs-buffer.c, libfs/src/rfs/rtems-rfs-buffer-devio.c, libfs/src/rfs/rtems-rfs-buffer.h, libfs/src/rfs/rtems-rfs-data.h, libfs/src/rfs/rtems-rfs-dir.c, libfs/src/rfs/rtems-rfs-dir.h, libfs/src/rfs/rtems-rfs-dir-hash.c, libfs/src/rfs/rtems-rfs-dir-hash.h, libfs/src/rfs/rtems-rfs-file.c, libfs/src/rfs/rtems-rfs-file.h, libfs/src/rfs/rtems-rfs-file-system.c, libfs/src/rfs/rtems-rfs-file-system-fwd.h, libfs/src/rfs/rtems-rfs-file-system.h, libfs/src/rfs/rtems-rfs-format.c, libfs/src/rfs/rtems-rfs-format.h, libfs/src/rfs/rtems-rfs-group.c, libfs/src/rfs/rtems-rfs-group.h, libfs/src/rfs/rtems-rfs.h, libfs/src/rfs/rtems-rfs-inode.c, libfs/src/rfs/rtems-rfs-inode.h, libfs/src/rfs/rtems-rfs-link.c, libfs/src/rfs/rtems-rfs-link.h, libfs/src/rfs/rtems-rfs-mutex.c, libfs/src/rfs/rtems-rfs-mutex.h, libfs/src/rfs/rtems-rfs-rtems.c, libfs/src/rfs/rtems-rfs-rtems-dev.c, libfs/src/rfs/rtems-rfs-rtems-dir.c, libfs/src/rfs/rtems-rfs-rtems-file.c, libfs/src/rfs/rtems-rfs-rtems.h, libfs/src/rfs/rtems-rfs-rtems-utils.c, libfs/src/rfs/rtems-rfs-shell.c, libfs/src/rfs/rtems-rfs-shell.h, libfs/src/rfs/rtems-rfs-trace.c, libfs/src/rfs/rtems-rfs-trace.h: New.
  • Makefile.am, preinstall.am, libfs/Makefile.am, wrapup/Makefile.am: Updated with the RFS support.
  • libfs/README: Updated after 10 years.
  • libblock/src/flashdisk.c, libblock/src/nvdisk.c, libblock/src/ramdisk-driver.c: Updated to the new error reporting in libblock.
  • libmisc/shell/main_ls.c, libmisc/shell/print-ls.c: Fix printing the size in long mode.
  • libnetworking/nfs/bootp_subr.c, libnetworking/rtems/rtems_bootp.c, libnetworking/rtems/rtems_bsdnet_internal.h: Return the BOOTP/DHCP to the forever behaviour of 4.9 with the ability to call BOOTP and control the process if required.
  • Property mode set to 100644
File size: 1.7 KB
Line 
1/*
2 *  COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
3 *
4 *  The license and distribution terms for this file may be
5 *  found in the file LICENSE in this distribution or at
6 *  http://www.rtems.com/license/LICENSE.
7 *
8 *  $Id$
9 */
10/**
11 * @file
12 *
13 * @ingroup rtems-rfs
14 *
15 * RTEMS File System Mutex.
16 */
17
18#include <rtems/rfs/rtems-rfs-mutex.h>
19
20#if __rtems__
21/**
22 * RTEMS_RFS Mutex Attributes
23 *
24 * @warning Do not configure as inherit priority. If a driver is in the driver
25 *          initialisation table this locked semaphore will have the IDLE task
26 *          as the holder and a blocking task will raise the priority of the
27 *          IDLE task which can cause unsual side effects like not work.
28 */
29#define RTEMS_RFS_MUTEX_ATTRIBS \
30  (RTEMS_PRIORITY | RTEMS_SIMPLE_BINARY_SEMAPHORE | \
31   RTEMS_NO_INHERIT_PRIORITY | RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL)
32#endif
33
34int
35rtems_rfs_mutex_create (rtems_rfs_mutex* mutex)
36{
37#if __rtems__
38  rtems_status_code sc;
39  sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'),
40                               1, RTEMS_RFS_MUTEX_ATTRIBS, 0,
41                               mutex);
42  if (sc != RTEMS_SUCCESSFUL)
43  {
44    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
45      printf ("rtems-rfs: mutex: open failed: %s\n",
46              rtems_status_text (sc));
47    return EIO;
48  }
49#endif
50  return 0;
51}
52
53int
54rtems_rfs_mutex_destroy (rtems_rfs_mutex* mutex)
55{
56#if __rtems__
57  rtems_status_code sc;
58  sc = rtems_semaphore_delete (*mutex);
59  if (sc != RTEMS_SUCCESSFUL)
60  {
61    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
62      printf ("rtems-rfs: mutex: close failed: %s\n",
63              rtems_status_text (sc));
64    return EIO;
65  }
66#endif
67  return 0;
68}
Note: See TracBrowser for help on using the repository browser.