linux/fs/xfs/linux-2.6/sv.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc.
   3 * All Rights Reserved.
   4 *
   5 * This program is free software; you can redistribute it and/or
   6 * modify it under the terms of the GNU General Public License as
   7 * published by the Free Software Foundation.
   8 *
   9 * This program is distributed in the hope that it would be useful,
  10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12 * GNU General Public License for more details.
  13 *
  14 * You should have received a copy of the GNU General Public License
  15 * along with this program; if not, write the Free Software Foundation,
  16 * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  17 */
  18#ifndef __XFS_SUPPORT_SV_H__
  19#define __XFS_SUPPORT_SV_H__
  20
  21#include <linux/wait.h>
  22#include <linux/sched.h>
  23#include <linux/spinlock.h>
  24
  25/*
  26 * Synchronisation variables.
  27 *
  28 * (Parameters "pri", "svf" and "rts" are not implemented)
  29 */
  30
  31typedef struct sv_s {
  32        wait_queue_head_t waiters;
  33} sv_t;
  34
  35static inline void _sv_wait(sv_t *sv, spinlock_t *lock)
  36{
  37        DECLARE_WAITQUEUE(wait, current);
  38
  39        add_wait_queue_exclusive(&sv->waiters, &wait);
  40        __set_current_state(TASK_UNINTERRUPTIBLE);
  41        spin_unlock(lock);
  42
  43        schedule();
  44
  45        remove_wait_queue(&sv->waiters, &wait);
  46}
  47
  48#define sv_init(sv,flag,name) \
  49        init_waitqueue_head(&(sv)->waiters)
  50#define sv_destroy(sv) \
  51        /*NOTHING*/
  52#define sv_wait(sv, pri, lock, s) \
  53        _sv_wait(sv, lock)
  54#define sv_signal(sv) \
  55        wake_up(&(sv)->waiters)
  56#define sv_broadcast(sv) \
  57        wake_up_all(&(sv)->waiters)
  58
  59#endif /* __XFS_SUPPORT_SV_H__ */
  60
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.