Changeset 1cfe012 in rtems


Ignore:
Timestamp:
Jun 19, 2015, 12:24:27 PM (4 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, master
Children:
f22af606
Parents:
9d838902
Message:

nfsclient: Use an interrupt lock

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/libfs/src/nfsclient/src/nfs.c

    r9d838902 r1cfe012  
    210210#define UNLOCK(s)       do { rtems_semaphore_release((s)); \
    211211                                        } while (0)
     212
     213RTEMS_INTERRUPT_LOCK_DEFINE(static, nfs_global_lock, "NFS")
     214
     215#define NFS_GLOBAL_ACQUIRE(lock_context) \
     216    rtems_interrupt_lock_acquire(&nfs_global_lock, lock_context)
     217
     218#define NFS_GLOBAL_RELEASE(lock_context) \
     219    rtems_interrupt_lock_release(&nfs_global_lock, lock_context)
    212220
    213221static inline char *
     
    887895{
    888896NfsNode rval = malloc(sizeof(*rval));
    889 unsigned long flags;
     897rtems_interrupt_lock_context lock_context;
    890898
    891899#if DEBUG & DEBUG_TRACK_NODES
     
    896904                if (fh)
    897905                        memcpy( &SERP_FILE(rval), fh, sizeof(*fh) );
    898                 rtems_interrupt_disable(flags);
     906                NFS_GLOBAL_ACQUIRE(&lock_context);
    899907                        nfs->nodesInUse++;
    900                 rtems_interrupt_enable(flags);
     908                NFS_GLOBAL_RELEASE(&lock_context);
    901909                rval->nfs       = nfs;
    902910                rval->str               = 0;
     
    912920nfsNodeDestroy(NfsNode node)
    913921{
    914 unsigned long flags;
     922rtems_interrupt_lock_context lock_context;
    915923
    916924#if DEBUG & DEBUG_TRACK_NODES
     
    924932#endif
    925933
    926         rtems_interrupt_disable(flags);
     934        NFS_GLOBAL_ACQUIRE(&lock_context);
    927935                node->nfs->nodesInUse--;
    928936#if DEBUG & DEBUG_COUNT_NODES
     
    930938                        node->nfs->stringsInUse--;
    931939#endif
    932         rtems_interrupt_enable(flags);
     940        NFS_GLOBAL_RELEASE(&lock_context);
    933941
    934942        if (node->str)
     
    970978                        }
    971979#if DEBUG & DEBUG_COUNT_NODES
    972                         { unsigned long flags;
    973                         rtems_interrupt_disable(flags);
     980                        { rtems_interrupt_lock_context lock_context;
     981                        NFS_GLOBAL_ACQUIRE(&lock_context);
    974982                                node->nfs->stringsInUse++;
    975                         rtems_interrupt_enable(flags);
     983                        NFS_GLOBAL_RELEASE(&lock_context);
    976984                        }
    977985#endif
     
    15191527        if (dst->str != NULL) {
    15201528#if DEBUG & DEBUG_COUNT_NODES
    1521                 rtems_interrupt_level flags;
    1522                 rtems_interrupt_disable(flags);
     1529                rtems_interrupt_lock_context lock_context;
     1530                NFS_GLOBAL_ACQUIRE(&lock_context);
    15231531                        dst->nfs->stringsInUse--;
    1524                 rtems_interrupt_enable(flags);
     1532                NFS_GLOBAL_RELEASE(&lock_context);
    15251533#endif
    15261534                free(dst->str);
     
    15321540        if (dst->str != NULL) {
    15331541#if DEBUG & DEBUG_COUNT_NODES
    1534                 rtems_interrupt_level flags;
    1535                 rtems_interrupt_disable(flags);
     1542                rtems_interrupt_lock_context lock_context;
     1543                NFS_GLOBAL_ACQUIRE(&lock_context);
    15361544                        dst->nfs->stringsInUse++;
    1537                 rtems_interrupt_enable(flags);
     1545                NFS_GLOBAL_RELEASE(&lock_context);
    15381546#endif
    15391547        } else {
     
    31593167nfsSetTimeout(uint32_t timeout_ms)
    31603168{
    3161 rtems_interrupt_level k;
     3169rtems_interrupt_lock_context lock_context;
    31623170uint32_t                  s,us;
    31633171
     
    31703178        us = (timeout_ms % 1000) * 1000;
    31713179
    3172         rtems_interrupt_disable(k);
     3180        NFS_GLOBAL_ACQUIRE(&lock_context);
    31733181        _nfscalltimeout.tv_sec  = s;
    31743182        _nfscalltimeout.tv_usec = us;
    3175         rtems_interrupt_enable(k);
     3183        NFS_GLOBAL_RELEASE(&lock_context);
    31763184
    31773185        return 0;
     
    31813189nfsGetTimeout( void )
    31823190{
    3183 rtems_interrupt_level k;
     3191rtems_interrupt_lock_context lock_context;
    31843192uint32_t              s,us;
    3185         rtems_interrupt_disable(k);
     3193        NFS_GLOBAL_ACQUIRE(&lock_context);
    31863194        s  = _nfscalltimeout.tv_sec;
    31873195        us = _nfscalltimeout.tv_usec;
    3188         rtems_interrupt_enable(k);
     3196        NFS_GLOBAL_RELEASE(&lock_context);
    31893197        return s*1000 + us/1000;
    31903198}
Note: See TracChangeset for help on using the changeset viewer.