brintos

brintos / linux-shallow public Read only

0
0
Text · 3.9 KiB · 9cc3448 Raw
114 lines · c
1/*2 * AGPGART module version 0.993 * Copyright (C) 1999 Jeff Hartmann4 * 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 a8 * copy of this software and associated documentation files (the "Software"),9 * to deal in the Software without restriction, including without limitation10 * the rights to use, copy, modify, merge, publish, distribute, sublicense,11 * and/or sell copies of the Software, and to permit persons to whom the12 * Software is furnished to do so, subject to the following conditions:13 *14 * The above copyright notice and this permission notice shall be included15 * in all copies or substantial portions of the Software.16 *17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL20 * 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_H28#define _UAPI_AGP_H29 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 TRUE46#define TRUE 147#endif48 49#ifndef FALSE50#define FALSE 051#endif52 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 */114