Changeset 6604dc8 in rtems-libbsd


Ignore:
Timestamp:
Sep 25, 2014, 8:48:14 AM (5 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, 5-freebsd-12, freebsd-9.3, master
Children:
b8021fd
Parents:
ccbc70d
git-author:
Sebastian Huber <sebastian.huber@…> (09/25/14 08:48:14)
git-committer:
Sebastian Huber <sebastian.huber@…> (09/25/14 08:57:56)
Message:

Delete rtems_bsd_thread_chain

Rely on RTEMS object registration for threads.

Files:
8 edited

Legend:

Unmodified
Added
Removed
  • freebsd/sys/sys/proc.h

    rccbc70d r6604dc8  
    202202 * Thread context.  Processes may have multiple threads.
    203203 */
    204 #ifdef __rtems__
    205 #include <rtems/chain.h>
    206 #endif /* __rtems__ */
    207204struct thread {
    208205#ifdef __rtems__
    209         rtems_chain_node td_node;
    210206        Thread_Control *td_thread;
    211207        struct rtems_bsd_program_control *td_prog_ctrl;
    212         char td_name [16];
     208        char td_name[32];
    213209#endif /* __rtems__ */
    214210#ifndef __rtems__
  • rtemsbsd/include/machine/rtems-bsd-thread.h

    rccbc70d r6604dc8  
    6969};
    7070
    71 extern rtems_chain_control rtems_bsd_thread_chain;
    72 
    7371struct thread *
    7472rtems_bsd_get_thread(const Thread_Control *thread);
  • rtemsbsd/include/rtems/bsd/bsd.h

    rccbc70d r6604dc8  
    7171rtems_status_code rtems_bsd_initialize(void);
    7272
    73 void rtems_bsd_shell_initialize(void);
    74 
    7573#ifdef __cplusplus
    7674}
  • rtemsbsd/include/rtems/netcmds-config.h

    rccbc70d r6604dc8  
    1919#include <rtems/shell.h>
    2020
    21 /*
    22  *  Externs for all command definition structures
    23  */
    24 // #if RTEMS_NETWORKING
    25   extern rtems_shell_cmd_t rtems_shell_PING_Command;
    26   extern rtems_shell_cmd_t rtems_shell_PING6_Command;
     21#ifdef __cplusplus
     22extern "C" {
     23#endif /* __cplusplus */
    2724
    28   extern rtems_shell_cmd_t rtems_shell_IFCONFIG_Command;
    29   extern rtems_shell_cmd_t rtems_shell_ROUTE_Command;
    30   extern rtems_shell_cmd_t rtems_shell_NETSTAT_Command;
    31   extern rtems_shell_cmd_t rtems_shell_DHCPCD_Command;
    32 // #endif
     25extern rtems_shell_cmd_t rtems_shell_BSD_Command;
     26
     27extern rtems_shell_cmd_t rtems_shell_PING_Command;
     28extern rtems_shell_cmd_t rtems_shell_PING6_Command;
     29
     30extern rtems_shell_cmd_t rtems_shell_IFCONFIG_Command;
     31extern rtems_shell_cmd_t rtems_shell_ROUTE_Command;
     32extern rtems_shell_cmd_t rtems_shell_NETSTAT_Command;
     33extern rtems_shell_cmd_t rtems_shell_DHCPCD_Command;
     34
     35extern rtems_shell_cmd_t rtems_shell_DHCPCD_Command;
     36
     37#ifdef __cplusplus
     38}
     39#endif /* __cplusplus */
    3340
    3441#endif
  • rtemsbsd/rtems/rtems-bsd-panic.c

    rccbc70d r6604dc8  
    4444#include <rtems/bsd/sys/types.h>
    4545#include <sys/systm.h>
    46 #include <sys/kernel.h>
    47 #include <rtems/bsd/sys/lock.h>
    48 #include <sys/mutex.h>
    49 #include <sys/proc.h>
    50 
    51 static void
    52 suspend_all_threads(void)
    53 {
    54         const rtems_chain_control *chain = &rtems_bsd_thread_chain;
    55         const rtems_chain_node *node = rtems_chain_immutable_first(chain);
    56         rtems_id self = rtems_task_self();
    57 
    58         while (!rtems_chain_is_tail(chain, node)) {
    59                 const struct thread *td = (const struct thread *) node;
    60                 rtems_id id = rtems_bsd_get_task_id(td);
    61 
    62                 if (id != self) {
    63                         rtems_task_suspend(id);
    64                 }
    65 
    66                 node = rtems_chain_immutable_next(node);
    67         }
    68 
    69         rtems_task_suspend(RTEMS_SELF);
    70 }
    7146
    7247void
     
    7550        va_list ap;
    7651
    77         printf("*** BSD PANIC *** ");
     52        printf("\n*** BSD PANIC *** ");
    7853
    7954        va_start(ap, fmt);
     
    8358        printf("\n");
    8459
    85         suspend_all_threads();
     60        rtems_task_suspend(RTEMS_SELF);
    8661
    8762        /* FIXME */
  • rtemsbsd/rtems/rtems-bsd-shell.c

    rccbc70d r6604dc8  
    88
    99/*
    10  * Copyright (c) 2009-2013 embedded brains GmbH.  All rights reserved.
     10 * Copyright (c) 2009-2014 embedded brains GmbH.  All rights reserved.
    1111 *
    1212 *  embedded brains GmbH
     
    4747#include <sys/proc.h>
    4848
    49 #include <rtems/bsd/bsd.h>
    50 #include <rtems/shell.h>
     49#include <inttypes.h>
     50
     51#include <rtems/netcmds-config.h>
    5152
    5253static void
    53 rtems_bsd_dump_thread(void)
     54rtems_bsd_dump_thread(Thread_Control *thread)
    5455{
    55         const rtems_chain_control *chain = &rtems_bsd_thread_chain;
    56         const rtems_chain_node *node = rtems_chain_immutable_first(chain);
     56        const struct thread *td = rtems_bsd_get_thread(thread);
    5757
    58         printf("thread dump:\n");
     58        if (td != NULL) {
     59                char buf[5];
     60                const char *name = td->td_name;
    5961
    60         while (!rtems_chain_is_tail(chain, node)) {
    61                 const struct thread *td = (const struct thread *) node;
     62                if (name == NULL || name[0] == '\0') {
     63                        rtems_object_get_name(thread->Object.id, sizeof(buf), &buf[0]);
     64                        name = &buf[0];
     65                }
    6266
    63                 printf("\t%s: 0x%08x\n", td->td_name, rtems_bsd_get_task_id(td));
    64 
    65                 node = rtems_chain_immutable_next(node);
     67                fprintf(
     68                        stdout,
     69                        " 0x%08" PRIx32 " | %8" PRIu32 " | %s\n",
     70                        thread->Object.id,
     71                        thread->current_priority,
     72                        name
     73                );
    6674        }
    6775}
    6876
    69 static const char rtems_bsd_usage [] =
    70         "bsd {all|condvar|thread|callout}";
     77static void
     78rtems_bsd_dump_threads(void)
     79{
     80        fprintf(
     81                stdout,
     82                "-------------------------------------------------------------------------------\n"
     83                "                                  BSD THREADS\n"
     84                "------------+----------+-------------------------------------------------------\n"
     85                " ID         | PRIORITY | NAME\n"
     86                "------------+----------+-------------------------------------------------------\n"
     87        );
     88
     89        rtems_iterate_over_all_threads(rtems_bsd_dump_thread);
     90
     91        fprintf(
     92                stdout,
     93                "------------+----------+-------------------------------------------------------\n"
     94        );
     95}
     96
     97static const char rtems_bsd_usage[] = "bsd";
    7198
    7299#define CMP(s) all || strcasecmp(argv [1], s) == 0
     
    75102rtems_bsd_info(int argc, char **argv)
    76103{
    77         bool usage = true;
    78 
    79         if (argc == 2) {
    80                 bool all = false;
    81 
    82                 if (CMP("all")) {
    83                         all = true;
    84                 }
    85 
    86                 if (CMP("thread")) {
    87                         rtems_bsd_dump_thread();
    88                         usage = false;
    89                 }
    90         }
    91 
    92         if (usage) {
    93                 puts(rtems_bsd_usage);
    94         }
     104        rtems_bsd_dump_threads();
    95105
    96106        return 0;
    97107}
    98108
    99 static rtems_shell_cmd_t rtems_bsd_info_command = {
     109rtems_shell_cmd_t rtems_shell_BSD_Command = {
    100110        .name = "bsd",
    101         .usage = rtems_bsd_usage,
     111        .usage = &rtems_bsd_usage[0],
    102112        .topic = "bsp",
    103113        .command = rtems_bsd_info,
     
    105115        .next = NULL
    106116};
    107 
    108 void
    109 rtems_bsd_shell_initialize(void)
    110 {
    111         rtems_shell_add_cmd_struct(&rtems_bsd_info_command);
    112 }
  • rtemsbsd/rtems/rtems-bsd-thread.c

    rccbc70d r6604dc8  
    5757#include <rtems/score/threadimpl.h>
    5858#include <rtems/score/threadqimpl.h>
    59 
    60 RTEMS_CHAIN_DEFINE_EMPTY(rtems_bsd_thread_chain);
    6159
    6260static size_t rtems_bsd_extension_index;
     
    163161)
    164162{
    165         bool ok = true;
     163        bool ok;
    166164
    167165        if (rtems_bsd_is_bsd_thread(created)) {
     
    169167
    170168                ok = td != NULL;
    171                 if (ok) {
    172                         rtems_chain_append(&rtems_bsd_thread_chain, &td->td_node);
    173                 }
     169        } else {
     170                ok = true;
    174171        }
    175172
     
    187184        if (td != NULL) {
    188185                seltdfini(td);
    189 
    190                 if (rtems_bsd_is_bsd_thread(deleted)) {
    191                         rtems_chain_extract(&td->td_node);
    192                 }
    193 
    194186                free(td->td_sleepqueue, M_TEMP);
    195187                free(td, M_TEMP);
  • testsuite/include/rtems/bsd/test/default-network-init.h

    rccbc70d r6604dc8  
    310310#define CONFIGURE_SHELL_USER_COMMANDS \
    311311  &bsp_interrupt_shell_command, \
     312  &rtems_shell_BSD_Command, \
    312313  &rtems_shell_PING_Command, \
    313314  &rtems_shell_ROUTE_Command, \
Note: See TracChangeset for help on using the changeset viewer.