Changeset 2aa5b98 in rtems


Ignore:
Timestamp:
Jan 3, 2018, 3:20:57 PM (19 months ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
master
Children:
2fd31117
Parents:
3535439f
git-author:
Sebastian Huber <sebastian.huber@…> (01/03/18 15:20:57)
git-committer:
Sebastian Huber <sebastian.huber@…> (02/07/18 07:58:31)
Message:

syslog: Use self-contained recursive mutex

Update #2843.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/libnetworking/lib/syslog.c

    r3535439f r2aa5b98  
    88
    99#include <rtems.h>
     10#include <rtems/thread.h>
    1011#include <stdio.h>
    1112#include <stdarg.h>
     
    2526
    2627static int LogFd = -1;
    27 static rtems_id LogSemaphore;
     28static rtems_recursive_mutex LogSemaphore =
     29  RTEMS_RECURSIVE_MUTEX_INITIALIZER("syslog");
    2830extern struct in_addr rtems_bsdnet_log_host_address;
    2931
     
    9092        sent = 0;
    9193        if ((rtems_bsdnet_log_host_address.s_addr != INADDR_ANY)
    92          && (LogFd >= 0)
    93          && (rtems_semaphore_obtain (LogSemaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT) == RTEMS_SUCCESSFUL)) {
     94         && (LogFd >= 0)) {
    9495                /*
    9596                 * Set the destination address/port
     
    101102                memset (farAddress.sin_zero, '\0', sizeof farAddress.sin_zero);
    102103
     104                rtems_recursive_mutex_lock (&LogSemaphore);
    103105                /*
    104106                 * Send the message
     
    106108                if (sendto (LogFd, cbuf, cnt, 0, (struct sockaddr *)&farAddress, sizeof farAddress) >= 0)
    107109                        sent = 1;
    108                 rtems_semaphore_release (LogSemaphore);
     110                rtems_recursive_mutex_unlock (&LogSemaphore);
    109111        }
    110112        if (!sent && (LogStatus & LOG_CONS) && !(LogStatus & LOG_PERROR))
     
    115117openlog (const char *ident, int logstat, int logfac)
    116118{
    117         rtems_status_code sc;
    118119        struct sockaddr_in myAddress;
    119120
     
    145146                return;
    146147        }
    147 
    148         /*
    149          * Create the mutex
    150          */
    151         sc = rtems_semaphore_create (rtems_build_name('s', 'L', 'o', 'g'),
    152                                         1,
    153                                         RTEMS_PRIORITY |
    154                                                 RTEMS_BINARY_SEMAPHORE |
    155                                                 RTEMS_INHERIT_PRIORITY |
    156                                                 RTEMS_NO_PRIORITY_CEILING |
    157                                                 RTEMS_LOCAL,
    158                                         0,
    159                                         &LogSemaphore);
    160         if (sc != RTEMS_SUCCESSFUL) {
    161                 printf ("Can't create syslog semaphore: %d\n", sc);
    162                 close (LogFd);
    163                 LogFd = -1;
    164         }
    165148}
    166149
     
    171154                close (LogFd);
    172155                LogFd = -1;
    173                 rtems_semaphore_delete (LogSemaphore);
    174156        }
    175157}
Note: See TracChangeset for help on using the changeset viewer.