OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [cpukit/] [posix/] [src/] [semunlink.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1026 ivang
/*
2
 *  semunlink.c,v 1.8 2002/01/04 18:28:24 joel Exp
3
 */
4
 
5
#if HAVE_CONFIG_H
6
#include "config.h"
7
#endif
8
 
9
#include <stdarg.h>
10
 
11
#include <errno.h>
12
#include <fcntl.h>
13
#include <pthread.h>
14
#include <semaphore.h>
15
#include <limits.h>
16
 
17
#include <rtems/system.h>
18
#include <rtems/score/object.h>
19
#include <rtems/posix/semaphore.h>
20
#include <rtems/posix/time.h>
21
#include <rtems/seterr.h>
22
 
23
/*PAGE
24
 *
25
 *  sem_unlink
26
 *
27
 *  Unlinks a named semaphore, sem_close must also be called to remove
28
 *  the semaphore.
29
 *
30
 *  11.2.5 Remove a Named Semaphore, P1003.1b-1993, p.225
31
 */
32
 
33
int sem_unlink(
34
  const char *name
35
)
36
{
37
  int  status;
38
  register POSIX_Semaphore_Control *the_semaphore;
39
  sem_t                        the_semaphore_id;
40
 
41
  _Thread_Disable_dispatch();
42
 
43
  status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
44
  if ( status != 0 ) {
45
    _Thread_Enable_dispatch();
46
    rtems_set_errno_and_return_minus_one( status );
47
  }
48
 
49
  /*
50
   *  Don't support unlinking a remote semaphore.
51
   */
52
 
53
  if ( !_Objects_Is_local_id(the_semaphore_id) ) {
54
    _Thread_Enable_dispatch();
55
    rtems_set_errno_and_return_minus_one( ENOSYS );
56
  }
57
 
58
  the_semaphore = (POSIX_Semaphore_Control *) _Objects_Get_local_object(
59
    &_POSIX_Semaphore_Information,
60
    _Objects_Get_index( the_semaphore_id )
61
  );
62
 
63
#if defined(RTEMS_MULTIPROCESSING)
64
  if ( the_semaphore->process_shared == PTHREAD_PROCESS_SHARED ) {
65
    _Objects_MP_Close( &_POSIX_Semaphore_Information, the_semaphore_id );
66
  }
67
#endif
68
 
69
  the_semaphore->linked = FALSE;
70
  _POSIX_Semaphore_Namespace_remove( the_semaphore );
71
  _POSIX_Semaphore_Delete( the_semaphore );
72
 
73
  _Thread_Enable_dispatch();
74
  return 0;
75
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.