[PATCH v2] Use alias for rtems_task_self() and pthread_self()

Joel Sherrill joel at rtems.org
Thu Apr 29 18:12:45 UTC 2021


I'm not so ok because now the score has symbols for the Classic API and
pthreads in it.

The point of putting a method shared by both in the score was to avoid
contaminating the score with information about the APIs or the the APIs
with knowledge of each other. I think we still need separate files in RTEMS
and POSIX to hold the alias declarations.

On Thu, Apr 29, 2021, 11:03 AM Gedare Bloom <gedare at rtems.org> wrote:

> ok
>
> On Thu, Apr 29, 2021 at 7:18 AM Sebastian Huber
> <sebastian.huber at embedded-brains.de> wrote:
> >
> > This may reduce the code size a bit.
> > ---
> >  cpukit/Makefile.am                      |  3 +-
> >  cpukit/include/rtems/score/threadimpl.h |  7 ++++
> >  cpukit/posix/src/pthreadself.c          | 32 ---------------
> >  cpukit/rtems/src/taskself.c             | 28 -------------
> >  cpukit/score/src/threadselfid.c         | 53 +++++++++++++++++++++++++
> >  spec/build/cpukit/librtemscpu.yml       |  3 +-
> >  6 files changed, 62 insertions(+), 64 deletions(-)
> >  delete mode 100644 cpukit/posix/src/pthreadself.c
> >  delete mode 100644 cpukit/rtems/src/taskself.c
> >  create mode 100644 cpukit/score/src/threadselfid.c
> >
> > diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
> > index b0df610bed..096187c507 100644
> > --- a/cpukit/Makefile.am
> > +++ b/cpukit/Makefile.am
> > @@ -620,7 +620,6 @@ librtemscpu_a_SOURCES +=
> posix/src/pthreadgetschedparam.c
> >  librtemscpu_a_SOURCES += posix/src/pthreadinitthreads.c
> >  librtemscpu_a_SOURCES += posix/src/pthreadjoin.c
> >  librtemscpu_a_SOURCES += posix/src/pthreadonce.c
> > -librtemscpu_a_SOURCES += posix/src/pthreadself.c
> >  librtemscpu_a_SOURCES += posix/src/pthreadsetaffinitynp.c
> >  librtemscpu_a_SOURCES += posix/src/pthreadsetnamenp.c
> >  librtemscpu_a_SOURCES += posix/src/pthreadsetschedparam.c
> > @@ -800,7 +799,6 @@ librtemscpu_a_SOURCES += rtems/src/taskmode.c
> >  librtemscpu_a_SOURCES += rtems/src/taskrestart.c
> >  librtemscpu_a_SOURCES += rtems/src/taskresume.c
> >  librtemscpu_a_SOURCES += rtems/src/tasks.c
> > -librtemscpu_a_SOURCES += rtems/src/taskself.c
> >  librtemscpu_a_SOURCES += rtems/src/tasksetaffinity.c
> >  librtemscpu_a_SOURCES += rtems/src/tasksetpriority.c
> >  librtemscpu_a_SOURCES += rtems/src/tasksetscheduler.c
> > @@ -964,6 +962,7 @@ librtemscpu_a_SOURCES += score/src/threadinitialize.c
> >  librtemscpu_a_SOURCES += score/src/threadidledefault.c
> >  librtemscpu_a_SOURCES += score/src/threadloadenv.c
> >  librtemscpu_a_SOURCES += score/src/threadrestart.c
> > +librtemscpu_a_SOURCES += score/src/threadselfid.c
> >  librtemscpu_a_SOURCES += score/src/threadsetstate.c
> >  librtemscpu_a_SOURCES += score/src/threadstackallocate.c
> >  librtemscpu_a_SOURCES += score/src/threadstackfree.c
> > diff --git a/cpukit/include/rtems/score/threadimpl.h
> b/cpukit/include/rtems/score/threadimpl.h
> > index 5dfd142b92..c861e8b119 100644
> > --- a/cpukit/include/rtems/score/threadimpl.h
> > +++ b/cpukit/include/rtems/score/threadimpl.h
> > @@ -903,6 +903,13 @@ Thread_Control *_Thread_Get(
> >    ISR_lock_Context  *lock_context
> >  );
> >
> > +/**
> > + * @brief Gets the identifier of the calling thread.
> > + *
> > + * @return Returns the identifier of the calling thread.
> > + */
> > +Objects_Id _Thread_Self_id( void );
> > +
> >  /**
> >   * @brief Gets the cpu of the thread's scheduler.
> >   *
> > diff --git a/cpukit/posix/src/pthreadself.c
> b/cpukit/posix/src/pthreadself.c
> > deleted file mode 100644
> > index db5f2f189d..0000000000
> > --- a/cpukit/posix/src/pthreadself.c
> > +++ /dev/null
> > @@ -1,32 +0,0 @@
> > -/**
> > - * @file
> > - *
> > - * @ingroup POSIXAPI
> > - *
> > - * @brief Function returns the ID of the Calling Thread
> > - */
> > -
> > -/*
> > - *  16.1.6 Get Calling Thread's ID, p1003.1c/Draft 10, p. 152
> > - *
> > - *  COPYRIGHT (c) 1989-1999.
> > - *  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.org/license/LICENSE.
> > - */
> > -
> > -#ifdef HAVE_CONFIG_H
> > -#include "config.h"
> > -#endif
> > -
> > -#include <pthread.h>
> > -
> > -#include <rtems/score/percpu.h>
> > -#include <rtems/score/thread.h>
> > -
> > -pthread_t pthread_self( void )
> > -{
> > -  return _Thread_Get_executing()->Object.id;
> > -}
> > diff --git a/cpukit/rtems/src/taskself.c b/cpukit/rtems/src/taskself.c
> > deleted file mode 100644
> > index 193e691ce5..0000000000
> > --- a/cpukit/rtems/src/taskself.c
> > +++ /dev/null
> > @@ -1,28 +0,0 @@
> > -/**
> > - * @file
> > - *
> > - * @ingroup RTEMSImplClassicTask
> > - *
> > - * @brief This source file contains the implementation of
> > - *   rtems_task_self().
> > - */
> > -
> > -/*
> > - *  COPYRIGHT (c) 1989-2007.
> > - *  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.org/license/LICENSE.
> > - */
> > -
> > -#ifdef HAVE_CONFIG_H
> > -#include "config.h"
> > -#endif
> > -
> > -#include <rtems/rtems/tasksimpl.h>
> > -
> > -rtems_id rtems_task_self(void)
> > -{
> > -   return _Thread_Get_executing()->Object.id;
> > -}
> > diff --git a/cpukit/score/src/threadselfid.c
> b/cpukit/score/src/threadselfid.c
> > new file mode 100644
> > index 0000000000..f888a37619
> > --- /dev/null
> > +++ b/cpukit/score/src/threadselfid.c
> > @@ -0,0 +1,53 @@
> > +/* SPDX-License-Identifier: BSD-2-Clause */
> > +
> > +/**
> > + * @file
> > + *
> > + * @ingroup RTEMSScoreThread
> > + *
> > + * @brief This source file contains the implementation of
> _Thread_Self_id().
> > + */
> > +
> > +/*
> > + * Copyright (C) 2021 embedded brains GmbH (
> http://www.embedded-brains.de)
> > + * Copyright (C) 1995 On-Line Applications Research Corporation (OAR)
> > + *
> > + * Redistribution and use in source and binary forms, with or without
> > + * modification, are permitted provided that the following conditions
> > + * are met:
> > + * 1. Redistributions of source code must retain the above copyright
> > + *    notice, this list of conditions and the following disclaimer.
> > + * 2. Redistributions in binary form must reproduce the above copyright
> > + *    notice, this list of conditions and the following disclaimer in
> the
> > + *    documentation and/or other materials provided with the
> distribution.
> > + *
> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> "AS IS"
> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
> TO, THE
> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
> PURPOSE
> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
> CONTRIBUTORS BE
> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
> BUSINESS
> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
> IN
> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> OTHERWISE)
> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
> OF THE
> > + * POSSIBILITY OF SUCH DAMAGE.
> > + */
> > +
> > +#ifdef HAVE_CONFIG_H
> > +#include "config.h"
> > +#endif
> > +
> > +#include <rtems/score/threadimpl.h>
> > +
> > +#include <pthread.h>
> > +#include <rtems/rtems/tasksimpl.h>
> > +
> > +Objects_Id _Thread_Self_id( void )
> > +{
> > +  return _Thread_Get_executing()->Object.id;
> > +}
> > +
> > +RTEMS_ALIAS( _Thread_Self_id ) pthread_t pthread_self( void );
> > +
> > +RTEMS_ALIAS( _Thread_Self_id ) rtems_id rtems_task_self( void );
> > diff --git a/spec/build/cpukit/librtemscpu.yml
> b/spec/build/cpukit/librtemscpu.yml
> > index a3a9ee42e3..21fa6ea787 100644
> > --- a/spec/build/cpukit/librtemscpu.yml
> > +++ b/spec/build/cpukit/librtemscpu.yml
> > @@ -1119,7 +1119,6 @@ source:
> >  - cpukit/posix/src/pthreadinitthreads.c
> >  - cpukit/posix/src/pthreadjoin.c
> >  - cpukit/posix/src/pthreadonce.c
> > -- cpukit/posix/src/pthreadself.c
> >  - cpukit/posix/src/pthreadsetaffinitynp.c
> >  - cpukit/posix/src/pthreadsetnamenp.c
> >  - cpukit/posix/src/pthreadsetschedparam.c
> > @@ -1299,7 +1298,6 @@ source:
> >  - cpukit/rtems/src/taskrestart.c
> >  - cpukit/rtems/src/taskresume.c
> >  - cpukit/rtems/src/tasks.c
> > -- cpukit/rtems/src/taskself.c
> >  - cpukit/rtems/src/tasksetaffinity.c
> >  - cpukit/rtems/src/tasksetpriority.c
> >  - cpukit/rtems/src/tasksetscheduler.c
> > @@ -1548,6 +1546,7 @@ source:
> >  - cpukit/score/src/threadqtimeout.c
> >  - cpukit/score/src/threadrestart.c
> >  - cpukit/score/src/threadscheduler.c
> > +- cpukit/score/src/threadselfid.c
> >  - cpukit/score/src/threadsetstate.c
> >  - cpukit/score/src/threadstackallocate.c
> >  - cpukit/score/src/threadstackfree.c
> > --
> > 2.26.2
> >
> > _______________________________________________
> > devel mailing list
> > devel at rtems.org
> > http://lists.rtems.org/mailman/listinfo/devel
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20210429/44cd9c0d/attachment-0001.html>


More information about the devel mailing list