cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

dlm_device.h (2597B)


      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 */
     33struct 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[];
     49};
     50
     51struct dlm_lspace_params {
     52	__u32 flags;
     53	__u32 minor;
     54	char name[];
     55};
     56
     57struct dlm_purge_params {
     58	__u32 nodeid;
     59	__u32 pid;
     60};
     61
     62struct 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
     75struct 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
     82struct 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