change log for rtems (2011-12-13)

rtems-vc at rtems.org rtems-vc at rtems.org
Tue Dec 13 13:10:23 UTC 2011


 *sh*:
2011-12-13	Sebastian Huber <sebastian.huber at embedded-brains.de>

	* posix/src/mqueuenametoid.c,
	posix/src/semaphorenametoid.c: Removed files.
	* posix/src/psxnametoid.c: New file.
	* posix/Makefile.am: Reflect changes above.
	* posix/include/rtems/posix/config.h: Fixed integer types.
	* posix/include/rtems/posix/posixapi.h: Declare _POSIX_Name_to_id().
	* posix/include/rtems/posix/mqueue.h,
	posix/inline/rtems/posix/mqueue.inl: Changed parameter of
	_POSIX_Message_queue_Create_support().
	_POSIX_Message_queue_Name_to_id() is now inline.
	* posix/include/rtems/posix/semaphore.h,
	posix/inline/rtems/posix/semaphore.inl: Changed parameter of
	_POSIX_Semaphore_Create_support().  _POSIX_Semaphore_Name_to_id() is
	now inline.
	* posix/src/mqueuecreatesupp.c, posix/src/semaphorecreatesupp.c: Use
	_Workspace_String_duplicate().
	* posix/src/mqueuesendsupp.c, posix/src/mqueueopen.c,
	posix/src/mqueueunlink.c, posix/src/seminit.c, posix/src/semopen.c,
	posix/src/semunlink.c: Update due to API changes.

M 1.3090  cpukit/ChangeLog
M   1.92  cpukit/posix/Makefile.am
M   1.23  cpukit/posix/include/rtems/posix/config.h
M   1.32  cpukit/posix/include/rtems/posix/mqueue.h
M   1.12  cpukit/posix/include/rtems/posix/posixapi.h
M   1.29  cpukit/posix/include/rtems/posix/semaphore.h
M   1.20  cpukit/posix/inline/rtems/posix/mqueue.inl
M   1.19  cpukit/posix/inline/rtems/posix/semaphore.inl
M   1.24  cpukit/posix/src/mqueuecreatesupp.c
R   1.13  cpukit/posix/src/mqueuenametoid.c
M   1.18  cpukit/posix/src/mqueueopen.c
M   1.24  cpukit/posix/src/mqueuesendsupp.c
M   1.19  cpukit/posix/src/mqueueunlink.c
A    1.1  cpukit/posix/src/psxnametoid.c
M   1.17  cpukit/posix/src/semaphorecreatesupp.c
R   1.14  cpukit/posix/src/semaphorenametoid.c
M   1.10  cpukit/posix/src/seminit.c
M   1.18  cpukit/posix/src/semopen.c
M   1.16  cpukit/posix/src/semunlink.c

diff -u rtems/cpukit/ChangeLog:1.3089 rtems/cpukit/ChangeLog:1.3090
--- rtems/cpukit/ChangeLog:1.3089	Tue Dec 13 04:52:19 2011
+++ rtems/cpukit/ChangeLog	Tue Dec 13 06:56:52 2011
@@ -1,5 +1,27 @@
 2011-12-13	Sebastian Huber <sebastian.huber at embedded-brains.de>
 
+	* posix/src/mqueuenametoid.c,
+	posix/src/semaphorenametoid.c: Removed files.
+	* posix/src/psxnametoid.c: New file.
+	* posix/Makefile.am: Reflect changes above.
+	* posix/include/rtems/posix/config.h: Fixed integer types.
+	* posix/include/rtems/posix/posixapi.h: Declare _POSIX_Name_to_id().
+	* posix/include/rtems/posix/mqueue.h,
+	posix/inline/rtems/posix/mqueue.inl: Changed parameter of
+	_POSIX_Message_queue_Create_support().
+	_POSIX_Message_queue_Name_to_id() is now inline.
+	* posix/include/rtems/posix/semaphore.h,
+	posix/inline/rtems/posix/semaphore.inl: Changed parameter of
+	_POSIX_Semaphore_Create_support().  _POSIX_Semaphore_Name_to_id() is
+	now inline.
+	* posix/src/mqueuecreatesupp.c, posix/src/semaphorecreatesupp.c: Use
+	_Workspace_String_duplicate().
+	* posix/src/mqueuesendsupp.c, posix/src/mqueueopen.c,
+	posix/src/mqueueunlink.c, posix/src/seminit.c, posix/src/semopen.c,
+	posix/src/semunlink.c: Update due to API changes.
+
+2011-12-13	Sebastian Huber <sebastian.huber at embedded-brains.de>
+
 	* sapi/include/confdefs.h: Fixed workspace size estimate of POSIX keys
 	and message queues.
 

diff -u rtems/cpukit/posix/Makefile.am:1.91 rtems/cpukit/posix/Makefile.am:1.92
--- rtems/cpukit/posix/Makefile.am:1.91	Thu Dec  8 02:57:57 2011
+++ rtems/cpukit/posix/Makefile.am	Tue Dec 13 06:56:52 2011
@@ -106,7 +106,7 @@
 ## MESSAGE_QUEUE_C_FILES
 libposix_a_SOURCES += src/mqueue.c src/mqueueclose.c \
     src/mqueuecreatesupp.c src/mqueuedeletesupp.c src/mqueuegetattr.c \
-    src/mqueuenametoid.c src/mqueuenotify.c src/mqueueopen.c \
+    src/mqueuenotify.c src/mqueueopen.c \
     src/mqueuereceive.c src/mqueuerecvsupp.c src/mqueuesend.c \
     src/mqueuesendsupp.c src/mqueuesetattr.c src/mqueuetimedreceive.c \
     src/mqueuetimedsend.c src/mqueuetranslatereturncode.c \
@@ -170,7 +170,7 @@
 
 ## SEMAPHORE_C_FILES
 libposix_a_SOURCES += src/semaphore.c src/semaphorecreatesupp.c \
-    src/semaphoredeletesupp.c src/semaphorenametoid.c \
+    src/semaphoredeletesupp.c \
     src/semaphoretranslatereturncode.c src/semaphorewaitsupp.c \
     src/semclose.c src/semdestroy.c src/semgetvalue.c src/seminit.c \
     src/semopen.c src/sempost.c src/semtimedwait.c src/semtrywait.c \
@@ -195,6 +195,7 @@
 
 ## SUPPORT_C_FILES
 libposix_a_SOURCES += src/psxpriorityisvalid.c
+libposix_a_SOURCES += src/psxnametoid.c
 
 EXTRA_DIST += src/README.mqueue
 

diff -u rtems/cpukit/posix/include/rtems/posix/config.h:1.22 rtems/cpukit/posix/include/rtems/posix/config.h:1.23
--- rtems/cpukit/posix/include/rtems/posix/config.h:1.22	Fri Jun 24 12:52:56 2011
+++ rtems/cpukit/posix/include/rtems/posix/config.h	Tue Dec 13 06:56:53 2011
@@ -45,19 +45,19 @@
 } posix_initialization_threads_table;
 
 typedef struct {
-  int                                 maximum_threads;
-  int                                 maximum_mutexes;
-  int                                 maximum_condition_variables;
-  int                                 maximum_keys;
-  int                                 maximum_timers;
-  int                                 maximum_queued_signals;
-  int                                 maximum_message_queues;
-  int                                 maximum_message_queue_descriptors;
-  int                                 maximum_semaphores;
-  int                                 maximum_barriers;
-  int                                 maximum_rwlocks;
-  int                                 maximum_spinlocks;
-  int                                 number_of_initialization_threads;
+  uint32_t                            maximum_threads;
+  uint32_t                            maximum_mutexes;
+  uint32_t                            maximum_condition_variables;
+  uint32_t                            maximum_keys;
+  uint32_t                            maximum_timers;
+  uint32_t                            maximum_queued_signals;
+  uint32_t                            maximum_message_queues;
+  uint32_t                            maximum_message_queue_descriptors;
+  uint32_t                            maximum_semaphores;
+  uint32_t                            maximum_barriers;
+  uint32_t                            maximum_rwlocks;
+  uint32_t                            maximum_spinlocks;
+  uint32_t                            number_of_initialization_threads;
   posix_initialization_threads_table *User_initialization_threads_table;
 } posix_api_configuration_table;
 

diff -u rtems/cpukit/posix/include/rtems/posix/mqueue.h:1.31 rtems/cpukit/posix/include/rtems/posix/mqueue.h:1.32
--- rtems/cpukit/posix/include/rtems/posix/mqueue.h:1.31	Sun Jul 24 18:55:06 2011
+++ rtems/cpukit/posix/include/rtems/posix/mqueue.h	Tue Dec 13 06:56:53 2011
@@ -23,6 +23,7 @@
 #include <mqueue.h> /* struct mq_attr */
 #include <rtems/score/coremsg.h>
 #include <rtems/score/object.h>
+#include <rtems/posix/posixapi.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -79,6 +80,7 @@
 
 int _POSIX_Message_queue_Create_support(
   const char                    *name,
+  size_t                         name_len,
   int                            pshared,
   struct mq_attr                *attr,
   POSIX_Message_queue_Control  **message_queue
@@ -126,7 +128,7 @@
   mqd_t               mqdes,
   const char         *msg_ptr,
   size_t              msg_len,
-  uint32_t            msg_prio,
+  unsigned int        msg_prio,
   bool                wait,
   Watchdog_Interval   timeout
 );
@@ -187,20 +189,6 @@
 );
 
 /*
- *  _POSIX_Message_queue_Name_to_id
- *
- *  DESCRIPTION:
- *
- *  This routine looks up the specified name for a message queue and returns the
- *  id of the message queue associated with it.
- */
-
-int _POSIX_Message_queue_Name_to_id(
-  const char          *name,
-  Objects_Id          *id
-);
-
-/*
  *  _POSIX_Message_queue_Priority_to_core
  *
  *  DESCRIPTION:

diff -u rtems/cpukit/posix/include/rtems/posix/posixapi.h:1.11 rtems/cpukit/posix/include/rtems/posix/posixapi.h:1.12
--- rtems/cpukit/posix/include/rtems/posix/posixapi.h:1.11	Fri Jun 24 12:52:56 2011
+++ rtems/cpukit/posix/include/rtems/posix/posixapi.h	Tue Dec 13 06:56:53 2011
@@ -20,6 +20,7 @@
 #define _RTEMS_POSIX_POSIXAPI_H
 
 #include <rtems/config.h>
+#include <rtems/score/object.h>
 
 /**
  *  @brief Initialize POSIX API
@@ -29,5 +30,27 @@
  */
 void _POSIX_API_Initialize(void);
 
+/**
+ *  @brief Queries the object identifier @a id for a @a name.
+ *
+ *  @param[in] information Object information.
+ *  @param[in] name Zero terminated name string to look up.
+ *  @param[out] id Pointer for identifier.  The pointer must be valid.
+ *  @param[out] len Pointer for string length.  The pointer must be valid.
+ *
+ *  @retval 0 Successful operation.
+ *  @retval EINVAL The @a name pointer is @c NULL or the @a name string has
+ *  zero length.
+ *  @retval ENAMETOOLONG The @a name string length is greater than or equal to
+ *  @c NAME_MAX.
+ *  @retval ENOENT Found no corresponding identifier.
+ */
+int _POSIX_Name_to_id(
+  Objects_Information *information,
+  const char          *name,
+  Objects_Id          *id,
+  size_t              *len
+);
+
 #endif
 /* end of include file */

diff -u rtems/cpukit/posix/include/rtems/posix/semaphore.h:1.28 rtems/cpukit/posix/include/rtems/posix/semaphore.h:1.29
--- rtems/cpukit/posix/include/rtems/posix/semaphore.h:1.28	Fri Jun 24 12:52:57 2011
+++ rtems/cpukit/posix/include/rtems/posix/semaphore.h	Tue Dec 13 06:56:53 2011
@@ -25,6 +25,7 @@
 
 #include <semaphore.h>
 #include <rtems/score/coresem.h>
+#include <rtems/posix/posixapi.h>
 
 /*
  *  Data Structure used to manage a POSIX semaphore
@@ -129,6 +130,7 @@
 
 int _POSIX_Semaphore_Create_support(
   const char                *name,
+  size_t                     name_len,
   int                        pshared,
   unsigned int               value,
   POSIX_Semaphore_Control  **the_sem
@@ -162,19 +164,6 @@
 );
 
 /*
- *  _POSIX_Semaphore_Name_to_id
- *
- *  DESCRIPTION:
- *
- *  This routine performs name to id translation.
- */
-
-int _POSIX_Semaphore_Name_to_id(
-  const char          *name,
-  sem_t          *id
-);
-
-/*
  *  _POSIX_Semaphore_Translate_core_semaphore_return_code
  *
  *  DESCRIPTION:

diff -u rtems/cpukit/posix/inline/rtems/posix/mqueue.inl:1.19 rtems/cpukit/posix/inline/rtems/posix/mqueue.inl:1.20
--- rtems/cpukit/posix/inline/rtems/posix/mqueue.inl:1.19	Sun Jul 24 18:55:06 2011
+++ rtems/cpukit/posix/inline/rtems/posix/mqueue.inl	Tue Dec 13 06:56:53 2011
@@ -127,7 +127,7 @@
   unsigned int priority
 )
 {
-  return priority * -1;
+  return (CORE_message_queue_Submit_types) priority * -1;
 }
 
 /*
@@ -143,7 +143,19 @@
 )
 {
   /* absolute value without a library dependency */
-  return ((priority >= 0) ? priority : -priority);
+  return (unsigned int) ((priority >= 0) ? priority : -priority);
+}
+
+/**
+ * @see _POSIX_Name_to_id().
+ */
+RTEMS_INLINE_ROUTINE int _POSIX_Message_queue_Name_to_id(
+  const char          *name,
+  Objects_Id          *id,
+  size_t              *len
+)
+{
+  return _POSIX_Name_to_id( &_POSIX_Message_queue_Information, name, id, len );
 }
 
 #endif

diff -u rtems/cpukit/posix/inline/rtems/posix/semaphore.inl:1.18 rtems/cpukit/posix/inline/rtems/posix/semaphore.inl:1.19
--- rtems/cpukit/posix/inline/rtems/posix/semaphore.inl:1.18	Sun Jul 24 18:55:06 2011
+++ rtems/cpukit/posix/inline/rtems/posix/semaphore.inl	Tue Dec 13 06:56:53 2011
@@ -81,6 +81,18 @@
   return !the_semaphore;
 }
 
+/**
+ * @see _POSIX_Name_to_id().
+ */
+RTEMS_INLINE_ROUTINE int _POSIX_Semaphore_Name_to_id(
+  const char *name,
+  Objects_Id *id,
+  size_t     *len
+)
+{
+  return _POSIX_Name_to_id( &_POSIX_Semaphore_Information, name, id, len );
+}
+
 #endif
 /*  end of include file */
 

diff -u rtems/cpukit/posix/src/mqueuecreatesupp.c:1.23 rtems/cpukit/posix/src/mqueuecreatesupp.c:1.24
--- rtems/cpukit/posix/src/mqueuecreatesupp.c:1.23	Sun Jul 24 18:55:07 2011
+++ rtems/cpukit/posix/src/mqueuecreatesupp.c	Tue Dec 13 06:56:53 2011
@@ -42,9 +42,6 @@
 #include <rtems/posix/mqueue.h>
 #include <rtems/posix/time.h>
 
-/* pure ANSI mode does not have this prototype */
-size_t strnlen(const char *, size_t);
-
 /*
  *  _POSIX_Message_queue_Create_support
  *
@@ -54,6 +51,7 @@
 
 int _POSIX_Message_queue_Create_support(
   const char                    *name_arg,
+  size_t                         name_len,
   int                            pshared,
   struct mq_attr                *attr_ptr,
   POSIX_Message_queue_Control  **message_queue
@@ -63,9 +61,7 @@
   CORE_message_queue_Attributes *the_mq_attr;
   struct mq_attr                 attr;
   char                          *name;
-  size_t                         n;
 
-  n = strnlen( name_arg, NAME_MAX );
   /* length of name has already been validated */
 
   _Thread_Disable_dispatch();
@@ -99,22 +95,21 @@
     rtems_set_errno_and_return_minus_one( ENFILE );
   }
 
-  the_mq->process_shared  = pshared;
-  the_mq->named = true;
-  the_mq->open_count = 1;
-  the_mq->linked = true;
-
   /*
    * Make a copy of the user's string for name just in case it was
    * dynamically constructed.
    */
-  name = _Workspace_Allocate(n+1);
-  if (!name) {
+  name = _Workspace_String_duplicate( name_arg, name_len );
+  if ( !name ) {
     _POSIX_Message_queue_Free( the_mq );
     _Thread_Enable_dispatch();
     rtems_set_errno_and_return_minus_one( ENOMEM );
   }
-  strncpy( name, name_arg, n+1 );
+
+  the_mq->process_shared  = pshared;
+  the_mq->named = true;
+  the_mq->open_count = 1;
+  the_mq->linked = true;
 
   /*
    *  NOTE: That thread blocking discipline should be based on the

diff -u rtems/cpukit/posix/src/mqueueopen.c:1.17 rtems/cpukit/posix/src/mqueueopen.c:1.18
--- rtems/cpukit/posix/src/mqueueopen.c:1.17	Wed Nov 30 21:46:36 2011
+++ rtems/cpukit/posix/src/mqueueopen.c	Tue Dec 13 06:56:53 2011
@@ -58,6 +58,7 @@
   POSIX_Message_queue_Control    *the_mq;
   POSIX_Message_queue_Control_fd *the_mq_fd;
   Objects_Locations               location;
+  size_t                          name_len;
 
   _Thread_Disable_dispatch();
 
@@ -75,7 +76,7 @@
   }
   the_mq_fd->oflag = oflag;
 
-  status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
+  status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id, &name_len );
 
   /*
    *  If the name to id translation worked, then the message queue exists
@@ -128,6 +129,7 @@
    */
   status = _POSIX_Message_queue_Create_support(
     name,
+    name_len,
     true,         /* shared across processes */
     attr,
     &the_mq

diff -u rtems/cpukit/posix/src/mqueuesendsupp.c:1.23 rtems/cpukit/posix/src/mqueuesendsupp.c:1.24
--- rtems/cpukit/posix/src/mqueuesendsupp.c:1.23	Sun Jul 24 18:55:07 2011
+++ rtems/cpukit/posix/src/mqueuesendsupp.c	Tue Dec 13 06:56:53 2011
@@ -48,7 +48,7 @@
   mqd_t               mqdes,
   const char         *msg_ptr,
   size_t              msg_len,
-  uint32_t            msg_prio,
+  unsigned int        msg_prio,
   bool                wait,
   Watchdog_Interval   timeout
 )
@@ -91,7 +91,7 @@
        */
       msg_status = _CORE_message_queue_Submit(
         &the_mq->Message_queue,
-        (void *)msg_ptr,
+        msg_ptr,
         msg_len,
         mqdes,      /* mqd_t is an object id */
         NULL,

diff -u rtems/cpukit/posix/src/mqueueunlink.c:1.18 rtems/cpukit/posix/src/mqueueunlink.c:1.19
--- rtems/cpukit/posix/src/mqueueunlink.c:1.18	Sun Jul 24 18:55:08 2011
+++ rtems/cpukit/posix/src/mqueueunlink.c	Tue Dec 13 06:56:53 2011
@@ -51,10 +51,11 @@
   int                                   status;
   register POSIX_Message_queue_Control *the_mq;
   Objects_Id                            the_mq_id;
+  size_t                                name_len;
 
   _Thread_Disable_dispatch();
 
-  status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
+  status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id, &name_len );
    if ( status != 0 ) {
     _Thread_Enable_dispatch();
     rtems_set_errno_and_return_minus_one( status );

diff -u /dev/null rtems/cpukit/posix/src/psxnametoid.c:1.1
--- /dev/null	Tue Dec 13 07:10:22 2011
+++ rtems/cpukit/posix/src/psxnametoid.c	Tue Dec 13 06:56:53 2011
@@ -0,0 +1,58 @@
+/*
+ *  COPYRIGHT (c) 1989-2009.
+ *  On-Line Applications Research Corporation (OAR).
+ *
+ *  The license and distribution terms for this file may be
+ *  found in the file LICENSE in this distribution or at
+ *  http://www.rtems.com/license/LICENSE.
+ *
+ *  $Id$
+ */
+
+#if HAVE_CONFIG_H
+  #include "config.h"
+#endif
+
+#include <rtems/posix/posixapi.h>
+
+#include <string.h>
+#include <limits.h>
+#include <errno.h>
+
+/* pure ANSI mode does not have this prototype */
+size_t strnlen(const char *, size_t);
+
+int _POSIX_Name_to_id(
+  Objects_Information *information,
+  const char          *name,
+  Objects_Id          *id,
+  size_t              *len
+)
+{
+  int eno = EINVAL;
+  size_t n = 0;
+
+  if ( name != NULL && name [0] != '\0' ) {
+    n = strnlen( name, NAME_MAX );
+
+    if ( n < NAME_MAX ) {
+      Objects_Name_or_id_lookup_errors status = _Objects_Name_to_id_string(
+        information,
+        name,
+        id
+      );
+
+      if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) {
+        eno = 0;
+      } else {
+        eno = ENOENT;
+      }
+    } else {
+      eno = ENAMETOOLONG;
+    }
+  }
+
+  *len = n;
+
+  return eno;
+}

diff -u rtems/cpukit/posix/src/semaphorecreatesupp.c:1.16 rtems/cpukit/posix/src/semaphorecreatesupp.c:1.17
--- rtems/cpukit/posix/src/semaphorecreatesupp.c:1.16	Thu Aug  6 14:26:56 2009
+++ rtems/cpukit/posix/src/semaphorecreatesupp.c	Tue Dec 13 06:56:53 2011
@@ -24,13 +24,11 @@
 
 #include <rtems/system.h>
 #include <rtems/score/object.h>
+#include <rtems/score/wkspace.h>
 #include <rtems/posix/semaphore.h>
 #include <rtems/posix/time.h>
 #include <rtems/seterr.h>
 
-/* pure ANSI mode does not have this prototype */
-size_t strnlen(const char *, size_t);
-
 /*
  *  _POSIX_Semaphore_Create_support
  *
@@ -39,7 +37,8 @@
  *  sem_open.
  */
 int _POSIX_Semaphore_Create_support(
-  const char                *name,
+  const char                *name_arg,
+  size_t                     name_len,
   int                        pshared,
   unsigned int               value,
   POSIX_Semaphore_Control  **the_sem
@@ -47,26 +46,35 @@
 {
   POSIX_Semaphore_Control   *the_semaphore;
   CORE_semaphore_Attributes *the_sem_attr;
-  char                      *name_p = (char *)name;
+  char                      *name;
 
   /* Sharing semaphores among processes is not currently supported */
   if (pshared != 0)
     rtems_set_errno_and_return_minus_one( ENOSYS );
 
-  if ( name ) {
-    if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
-      rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
-  }
-
   _Thread_Disable_dispatch();
 
   the_semaphore = _POSIX_Semaphore_Allocate();
-
   if ( !the_semaphore ) {
     _Thread_Enable_dispatch();
     rtems_set_errno_and_return_minus_one( ENOSPC );
   }
 
+  /*
+   * Make a copy of the user's string for name just in case it was
+   * dynamically constructed.
+   */
+  if ( name_arg != NULL ) {
+    name = _Workspace_String_duplicate( name_arg, name_len );
+    if ( !name ) {
+      _POSIX_Semaphore_Free( the_semaphore );
+      _Thread_Enable_dispatch();
+      rtems_set_errno_and_return_minus_one( ENOMEM );
+    }
+  } else {
+    name = NULL;
+  }
+
   the_semaphore->process_shared  = pshared;
 
   if ( name ) {
@@ -103,7 +111,7 @@
   _Objects_Open_string(
     &_POSIX_Semaphore_Information,
     &the_semaphore->Object,
-    name_p
+    name
   );
 
   *the_sem = the_semaphore;

diff -u rtems/cpukit/posix/src/seminit.c:1.9 rtems/cpukit/posix/src/seminit.c:1.10
--- rtems/cpukit/posix/src/seminit.c:1.9	Sun Jul 24 18:55:09 2011
+++ rtems/cpukit/posix/src/seminit.c	Tue Dec 13 06:56:53 2011
@@ -45,6 +45,7 @@
 
   status = _POSIX_Semaphore_Create_support(
     NULL,
+    0,
     pshared,
     value,
     &the_semaphore

diff -u rtems/cpukit/posix/src/semopen.c:1.17 rtems/cpukit/posix/src/semopen.c:1.18
--- rtems/cpukit/posix/src/semopen.c:1.17	Wed Nov 30 21:05:17 2011
+++ rtems/cpukit/posix/src/semopen.c	Tue Dec 13 06:56:53 2011
@@ -51,10 +51,10 @@
   mode_t                     mode;
   unsigned int               value = 0;
   int                        status;
-  sem_t                      the_semaphore_id;
-  sem_t                     *id;
+  Objects_Id                 the_semaphore_id;
   POSIX_Semaphore_Control   *the_semaphore;
   Objects_Locations          location;
+  size_t                     name_len;
 
   _Thread_Disable_dispatch();
 
@@ -65,7 +65,7 @@
     va_end(arg);
   }
 
-  status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
+  status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id, &name_len );
 
   /*
    *  If the name to id translation worked, then the semaphore exists
@@ -96,7 +96,7 @@
       rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
     }
 
-    the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location );
+    the_semaphore = _POSIX_Semaphore_Get( (sem_t *) &the_semaphore_id, &location );
     the_semaphore->open_count += 1;
     _Thread_Enable_dispatch();
     _Thread_Enable_dispatch();
@@ -110,6 +110,7 @@
 
   status =_POSIX_Semaphore_Create_support(
     name,
+    name_len,
     false,         /* not shared across processes */
     value,
     &the_semaphore
@@ -127,9 +128,8 @@
 return_id:
   #if defined(RTEMS_USE_16_BIT_OBJECT)
     the_semaphore->Semaphore_id = the_semaphore->Object.id;
-    id = &the_semaphore->Semaphore_id;
+    return &the_semaphore->Semaphore_id;
   #else
-    id = (sem_t *)&the_semaphore->Object.id;
+    return (sem_t *)&the_semaphore->Object.id;
   #endif
-  return id;
 }

diff -u rtems/cpukit/posix/src/semunlink.c:1.15 rtems/cpukit/posix/src/semunlink.c:1.16
--- rtems/cpukit/posix/src/semunlink.c:1.15	Sun Jul 24 18:55:09 2011
+++ rtems/cpukit/posix/src/semunlink.c	Tue Dec 13 06:56:53 2011
@@ -42,11 +42,12 @@
 {
   int  status;
   register POSIX_Semaphore_Control *the_semaphore;
-  sem_t                        the_semaphore_id;
+  Objects_Id the_semaphore_id;
+  size_t name_len;
 
   _Thread_Disable_dispatch();
 
-  status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
+  status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id, &name_len );
   if ( status != 0 ) {
     _Thread_Enable_dispatch();
     rtems_set_errno_and_return_minus_one( status );



--

Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20111213/a377912f/attachment-0001.html>


More information about the vc mailing list