Changeset ee0c369 in rtems-libbsd


Ignore:
Timestamp:
Nov 2, 2017, 1:08:10 PM (20 months ago)
Author:
Christian Mauderer <Christian.Mauderer@…>
Branches:
eeb3fd5d9b07ac9a2e280cff60a1b762bd273a8d, 1e989998de954bef51e6c19cc3d64d39f32100aa
Children:
4613db0
Parents:
ce2262e
git-author:
Christian Mauderer <Christian.Mauderer@…> (11/02/17 13:08:10)
git-committer:
Sebastian Huber <sebastian.huber@…> (11/10/17 12:33:03)
Message:

wpa_supplicant: Move forking command into own file.

The malloc wrapper must not be disabled. Therefore the command that uses
malloc without a wrapper has to live in another file.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • freebsd/contrib/wpa/wpa_supplicant/main.c

    rce2262e ree0c369  
    2323#include <assert.h>
    2424#include <sys/mutex.h>
    25 #define RTEMS_BSD_PROGRAM_NO_MALLOC_WRAP
    26 #define RTEMS_BSD_PROGRAM_NO_STRDUP_WRAP
    2725#include <machine/rtems-bsd-program.h>
    2826#endif /* __rtems__ */
     
    177175        return exit_code;
    178176}
    179 
    180 struct myparams {
    181         int argc;
    182         char ** argv;
    183 };
    184 
    185 static void
    186 new_wpa_supplicant_task(rtems_task_argument arg)
    187 {
    188         int argc;
    189         char ** argv;
    190         int i;
    191 
    192         struct myparams *params = (struct myparams *)arg;
    193         argc = params->argc;
    194         argv = params->argv;
    195 
    196         rtems_bsd_command_wpa_supplicant(argc, argv);
    197 
    198         for (i = 0; i < params->argc; i++) {
    199                 free(params->argv[i]);
    200         }
    201         free(params->argv);
    202         free(params);
    203 
    204         rtems_task_delete( RTEMS_SELF );
    205 }
    206 
    207 int rtems_bsd_command_wpa_supplicant_fork(int argc, char **argv)
    208 {
    209         rtems_status_code sc;
    210         rtems_id id;
    211         int i;
    212 
    213         struct myparams *params = malloc(sizeof(struct myparams));
    214         if (params == NULL)
    215                 return NULL;
    216 
    217         params->argc = argc;
    218         params->argv = malloc((argc + 1) * sizeof(argv[0]));
    219         if (params->argv == NULL)
    220                 return NULL;
    221 
    222         for (i = 0; i < argc; i++) {
    223                 params->argv[i] = strdup(argv[i]);
    224                 if (params->argv[i] == NULL)
    225                         return NULL;
    226         }
    227         params->argv[argc] = NULL;
    228 
    229         sc = rtems_task_create(
    230                 rtems_build_name('W', 'P', 'A', 'S'),
    231                 RTEMS_MAXIMUM_PRIORITY - 1,
    232                 8 * RTEMS_MINIMUM_STACK_SIZE,
    233                 RTEMS_DEFAULT_MODES,
    234                 RTEMS_FLOATING_POINT,
    235                 &id
    236         );
    237         assert(sc == RTEMS_SUCCESSFUL);
    238 
    239         sc = rtems_task_start(id, new_wpa_supplicant_task, params);
    240         assert(sc == RTEMS_SUCCESSFUL);
    241 }
    242177#endif /* __rtems__ */
    243178
  • rtemsbsd/rtems/rtems-bsd-shell-wpa_supplicant_fork.c

    rce2262e ree0c369  
    2828#include <rtems/netcmds-config.h>
    2929#include <machine/rtems-bsd-commands.h>
     30#include <assert.h>
     31
     32struct myparams {
     33        int argc;
     34        char ** argv;
     35};
     36
     37static void
     38new_wpa_supplicant_task(rtems_task_argument arg)
     39{
     40        int argc;
     41        char ** argv;
     42        int i;
     43
     44        struct myparams *params = (struct myparams *)arg;
     45        argc = params->argc;
     46        argv = params->argv;
     47
     48        rtems_bsd_command_wpa_supplicant(argc, argv);
     49
     50        for (i = 0; i < params->argc; i++) {
     51                free(params->argv[i]);
     52        }
     53        free(params->argv);
     54        free(params);
     55
     56        rtems_task_delete( RTEMS_SELF );
     57}
     58
     59int rtems_bsd_command_wpa_supplicant_fork(int argc, char **argv)
     60{
     61        rtems_status_code sc;
     62        rtems_id id;
     63        int i;
     64
     65        struct myparams *params = malloc(sizeof(struct myparams));
     66        if (params == NULL)
     67                return NULL;
     68
     69        params->argc = argc;
     70        params->argv = malloc((argc + 1) * sizeof(argv[0]));
     71        if (params->argv == NULL)
     72                return NULL;
     73
     74        for (i = 0; i < argc; i++) {
     75                params->argv[i] = strdup(argv[i]);
     76                if (params->argv[i] == NULL)
     77                        return NULL;
     78        }
     79        params->argv[argc] = NULL;
     80
     81        sc = rtems_task_create(
     82                rtems_build_name('W', 'P', 'A', 'S'),
     83                RTEMS_MAXIMUM_PRIORITY - 1,
     84                8 * RTEMS_MINIMUM_STACK_SIZE,
     85                RTEMS_DEFAULT_MODES,
     86                RTEMS_FLOATING_POINT,
     87                &id
     88        );
     89        assert(sc == RTEMS_SUCCESSFUL);
     90
     91        sc = rtems_task_start(id, new_wpa_supplicant_task, params);
     92        assert(sc == RTEMS_SUCCESSFUL);
     93}
    3094
    3195rtems_shell_cmd_t rtems_shell_WPA_SUPPLICANT_FORK_Command = {
Note: See TracChangeset for help on using the changeset viewer.