root/include/uapi/linux/dlm_device.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
   2 /******************************************************************************
   3 *******************************************************************************
   4 **
   5 **  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
   6 **  Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved.
   7 **
   8 **  This copyrighted material is made available to anyone wishing to use,
   9 **  modify, copy, or redistribute it subject to the terms and conditions
  10 **  of the GNU General Public License v.2.
  11 **
  12 *******************************************************************************
  13 ******************************************************************************/
  14 
  15 #ifndef _LINUX_DLM_DEVICE_H
  16 #define _LINUX_DLM_DEVICE_H
  17 
  18 /* This is the device interface for dlm, most users will use a library
  19  * interface.
  20  */
  21 
  22 #include <linux/dlm.h>
  23 #include <linux/types.h>
  24 
  25 #define DLM_USER_LVB_LEN        32
  26 
  27 /* Version of the device interface */
  28 #define DLM_DEVICE_VERSION_MAJOR 6
  29 #define DLM_DEVICE_VERSION_MINOR 0
  30 #define DLM_DEVICE_VERSION_PATCH 2
  31 
  32 /* struct passed to the lock write */
  33 struct dlm_lock_params {
  34         __u8 mode;
  35         __u8 namelen;
  36         __u16 unused;
  37         __u32 flags;
  38         __u32 lkid;
  39         __u32 parent;
  40         __u64 xid;
  41         __u64 timeout;
  42         void __user *castparam;
  43         void __user *castaddr;
  44         void __user *bastparam;
  45         void __user *bastaddr;
  46         struct dlm_lksb __user *lksb;
  47         char lvb[DLM_USER_LVB_LEN];
  48         char name[0];
  49 };
  50 
  51 struct dlm_lspace_params {
  52         __u32 flags;
  53         __u32 minor;
  54         char name[0];
  55 };
  56 
  57 struct dlm_purge_params {
  58         __u32 nodeid;
  59         __u32 pid;
  60 };
  61 
  62 struct dlm_write_request {
  63         __u32 version[3];
  64         __u8 cmd;
  65         __u8 is64bit;
  66         __u8 unused[2];
  67 
  68         union  {
  69                 struct dlm_lock_params   lock;
  70                 struct dlm_lspace_params lspace;
  71                 struct dlm_purge_params  purge;
  72         } i;
  73 };
  74 
  75 struct dlm_device_version {
  76         __u32 version[3];
  77 };
  78 
  79 /* struct read from the "device" fd,
  80    consists mainly of userspace pointers for the library to use */
  81 
  82 struct dlm_lock_result {
  83         __u32 version[3];
  84         __u32 length;
  85         void __user * user_astaddr;
  86         void __user * user_astparam;
  87         struct dlm_lksb __user * user_lksb;
  88         struct dlm_lksb lksb;
  89         __u8 bast_mode;
  90         __u8 unused[3];
  91         /* Offsets may be zero if no data is present */
  92         __u32 lvb_offset;
  93 };
  94 
  95 /* Commands passed to the device */
  96 #define DLM_USER_LOCK         1
  97 #define DLM_USER_UNLOCK       2
  98 #define DLM_USER_QUERY        3
  99 #define DLM_USER_CREATE_LOCKSPACE  4
 100 #define DLM_USER_REMOVE_LOCKSPACE  5
 101 #define DLM_USER_PURGE        6
 102 #define DLM_USER_DEADLOCK     7
 103 
 104 /* Lockspace flags */
 105 #define DLM_USER_LSFLG_AUTOFREE   1
 106 #define DLM_USER_LSFLG_FORCEFREE  2
 107 
 108 #endif
 109 

/* [<][>][^][v][top][bottom][index][help] */