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

agpgart.h (4016B)


      1/*
      2 * AGPGART module version 0.99
      3 * Copyright (C) 1999 Jeff Hartmann
      4 * Copyright (C) 1999 Precision Insight, Inc.
      5 * Copyright (C) 1999 Xi Graphics, Inc.
      6 *
      7 * Permission is hereby granted, free of charge, to any person obtaining a
      8 * copy of this software and associated documentation files (the "Software"),
      9 * to deal in the Software without restriction, including without limitation
     10 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     11 * and/or sell copies of the Software, and to permit persons to whom the
     12 * Software is furnished to do so, subject to the following conditions:
     13 *
     14 * The above copyright notice and this permission notice shall be included
     15 * in all copies or substantial portions of the Software.
     16 *
     17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     20 * JEFF HARTMANN, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM, 
     21 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
     22 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 
     23 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     24 *
     25 */
     26
     27#ifndef _UAPI_AGP_H
     28#define _UAPI_AGP_H
     29
     30#define AGPIOC_BASE       'A'
     31#define AGPIOC_INFO       _IOR (AGPIOC_BASE, 0, struct agp_info*)
     32#define AGPIOC_ACQUIRE    _IO  (AGPIOC_BASE, 1)
     33#define AGPIOC_RELEASE    _IO  (AGPIOC_BASE, 2)
     34#define AGPIOC_SETUP      _IOW (AGPIOC_BASE, 3, struct agp_setup*)
     35#define AGPIOC_RESERVE    _IOW (AGPIOC_BASE, 4, struct agp_region*)
     36#define AGPIOC_PROTECT    _IOW (AGPIOC_BASE, 5, struct agp_region*)
     37#define AGPIOC_ALLOCATE   _IOWR(AGPIOC_BASE, 6, struct agp_allocate*)
     38#define AGPIOC_DEALLOCATE _IOW (AGPIOC_BASE, 7, int)
     39#define AGPIOC_BIND       _IOW (AGPIOC_BASE, 8, struct agp_bind*)
     40#define AGPIOC_UNBIND     _IOW (AGPIOC_BASE, 9, struct agp_unbind*)
     41#define AGPIOC_CHIPSET_FLUSH _IO (AGPIOC_BASE, 10)
     42
     43#define AGP_DEVICE      "/dev/agpgart"
     44
     45#ifndef TRUE
     46#define TRUE 1
     47#endif
     48
     49#ifndef FALSE
     50#define FALSE 0
     51#endif
     52
     53#ifndef __KERNEL__
     54#include <linux/types.h>
     55
     56struct agp_version {
     57	__u16 major;
     58	__u16 minor;
     59};
     60
     61typedef struct _agp_info {
     62	struct agp_version version;	/* version of the driver        */
     63	__u32 bridge_id;	/* bridge vendor/device         */
     64	__u32 agp_mode;		/* mode info of bridge          */
     65	unsigned long aper_base;/* base of aperture             */
     66	__kernel_size_t aper_size;	/* size of aperture             */
     67	__kernel_size_t pg_total;	/* max pages (swap + system)    */
     68	__kernel_size_t pg_system;	/* max pages (system)           */
     69	__kernel_size_t pg_used;	/* current pages used           */
     70} agp_info;
     71
     72typedef struct _agp_setup {
     73	__u32 agp_mode;		/* mode info of bridge          */
     74} agp_setup;
     75
     76/*
     77 * The "prot" down below needs still a "sleep" flag somehow ...
     78 */
     79typedef struct _agp_segment {
     80	__kernel_off_t pg_start;	/* starting page to populate    */
     81	__kernel_size_t pg_count;	/* number of pages              */
     82	int prot;			/* prot flags for mmap          */
     83} agp_segment;
     84
     85typedef struct _agp_region {
     86	__kernel_pid_t pid;		/* pid of process       */
     87	__kernel_size_t seg_count;	/* number of segments   */
     88	struct _agp_segment *seg_list;
     89} agp_region;
     90
     91typedef struct _agp_allocate {
     92	int key;		/* tag of allocation            */
     93	__kernel_size_t pg_count;/* number of pages             */
     94	__u32 type;		/* 0 == normal, other devspec   */
     95   	__u32 physical;         /* device specific (some devices  
     96				 * need a phys address of the     
     97				 * actual page behind the gatt    
     98				 * table)                        */
     99} agp_allocate;
    100
    101typedef struct _agp_bind {
    102	int key;		/* tag of allocation            */
    103	__kernel_off_t pg_start;/* starting page to populate    */
    104} agp_bind;
    105
    106typedef struct _agp_unbind {
    107	int key;		/* tag of allocation            */
    108	__u32 priority;		/* priority for paging out      */
    109} agp_unbind;
    110
    111#endif				/* __KERNEL__ */
    112
    113#endif /* _UAPI_AGP_H */