⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drmp.h

📁 内核linux2.4.20,可跟rtlinux3.2打补丁 组成实时linux系统,编译内核
💻 H
📖 第 1 页 / 共 2 页
字号:
	__volatile__ unsigned int lock;	char			  padding[60]; /* Pad to cache line */} drm_hw_lock_t;typedef struct drm_file {	int		  authenticated;	int		  minor;	pid_t		  pid;	uid_t		  uid;	drm_magic_t	  magic;	unsigned long	  ioctl_count;	struct drm_file	  *next;	struct drm_file	  *prev;	struct drm_device *dev;	int 		  remove_auth_on_close;} drm_file_t;typedef struct drm_queue {	atomic_t	  use_count;	/* Outstanding uses (+1)	    */	atomic_t	  finalization;	/* Finalization in progress	    */	atomic_t	  block_count;	/* Count of processes waiting	    */	atomic_t	  block_read;	/* Queue blocked for reads	    */	wait_queue_head_t read_queue;	/* Processes waiting on block_read  */	atomic_t	  block_write;	/* Queue blocked for writes	    */	wait_queue_head_t write_queue;	/* Processes waiting on block_write */	atomic_t	  total_queued;	/* Total queued statistic	    */	atomic_t	  total_flushed;/* Total flushes statistic	    */	atomic_t	  total_locks;	/* Total locks statistics	    */	drm_ctx_flags_t	  flags;	/* Context preserving and 2D-only   */	drm_waitlist_t	  waitlist;	/* Pending buffers		    */	wait_queue_head_t flush_queue;	/* Processes waiting until flush    */} drm_queue_t;typedef struct drm_lock_data {	drm_hw_lock_t	  *hw_lock;	/* Hardware lock		   */	pid_t		  pid;		/* PID of lock holder (0=kernel)   */	wait_queue_head_t lock_queue;	/* Queue of blocked processes	   */	unsigned long	  lock_time;	/* Time of last lock in jiffies	   */} drm_lock_data_t;typedef struct drm_device_dma {				/* Performance Counters */	atomic_t	  total_prio;	/* Total DRM_DMA_PRIORITY	   */	atomic_t	  total_bytes;	/* Total bytes DMA'd		   */	atomic_t	  total_dmas;	/* Total DMA buffers dispatched	   */		atomic_t	  total_missed_dma;  /* Missed drm_do_dma	    */	atomic_t	  total_missed_lock; /* Missed lock in drm_do_dma   */	atomic_t	  total_missed_free; /* Missed drm_free_this_buffer */	atomic_t	  total_missed_sched;/* Missed drm_dma_schedule	    */	atomic_t	  total_tried;	/* Tried next_buffer		    */	atomic_t	  total_hit;	/* Sent next_buffer		    */	atomic_t	  total_lost;	/* Lost interrupt		    */	drm_buf_entry_t	  bufs[DRM_MAX_ORDER+1];	int		  buf_count;	drm_buf_t	  **buflist;	/* Vector of pointers info bufs	   */	int		  seg_count; 	int		  page_count;	unsigned long	  *pagelist;	unsigned long	  byte_count;	enum {	   _DRM_DMA_USE_AGP = 0x01	} flags;				/* DMA support */	drm_buf_t	  *this_buffer;	/* Buffer being sent		   */	drm_buf_t	  *next_buffer; /* Selected buffer to send	   */	drm_queue_t	  *next_queue;	/* Queue from which buffer selected*/	wait_queue_head_t waiting;	/* Processes waiting on free bufs  */} drm_device_dma_t;#if defined(CONFIG_AGP) || defined(CONFIG_AGP_MODULE)typedef struct drm_agp_mem {	unsigned long      handle;	agp_memory         *memory;	unsigned long      bound; /* address */	int                pages;	struct drm_agp_mem *prev;	struct drm_agp_mem *next;} drm_agp_mem_t;typedef struct drm_agp_head {	agp_kern_info      agp_info;	const char         *chipset;	drm_agp_mem_t      *memory;	unsigned long      mode;	int                enabled;	int                acquired;	unsigned long      base;   	int 		   agp_mtrr;} drm_agp_head_t;#endiftypedef struct drm_sigdata {	int           context;	drm_hw_lock_t *lock;} drm_sigdata_t;typedef struct drm_device {	const char	  *name;	/* Simple driver name		   */	char		  *unique;	/* Unique identifier: e.g., busid  */	int		  unique_len;	/* Length of unique field	   */	dev_t		  device;	/* Device number for mknod	   */	char		  *devname;	/* For /proc/interrupts		   */		int		  blocked;	/* Blocked due to VC switch?	   */	struct proc_dir_entry *root;	/* Root for this device's entries  */				/* Locks */	spinlock_t	  count_lock;	/* For inuse, open_count, buf_use  */	struct semaphore  struct_sem;	/* For others			   */				/* Usage Counters */	int		  open_count;	/* Outstanding files open	   */	atomic_t	  ioctl_count;	/* Outstanding IOCTLs pending	   */	atomic_t	  vma_count;	/* Outstanding vma areas open	   */	int		  buf_use;	/* Buffers in use -- cannot alloc  */	atomic_t	  buf_alloc;	/* Buffer allocation in progress   */				/* Performance Counters */	atomic_t	  total_open;	atomic_t	  total_close;	atomic_t	  total_ioctl;	atomic_t	  total_irq;	/* Total interruptions		   */	atomic_t	  total_ctx;	/* Total context switches	   */		atomic_t	  total_locks;	atomic_t	  total_unlocks;	atomic_t	  total_contends;	atomic_t	  total_sleeps;				/* Authentication */	drm_file_t	  *file_first;	drm_file_t	  *file_last;	drm_magic_head_t  magiclist[DRM_HASH_SIZE];				/* Memory management */	drm_map_t	  **maplist;	/* Vector of pointers to regions   */	int		  map_count;	/* Number of mappable regions	   */	drm_vma_entry_t	  *vmalist;	/* List of vmas (for debugging)	   */	drm_lock_data_t	  lock;		/* Information on hardware lock	   */				/* DMA queues (contexts) */	int		  queue_count;	/* Number of active DMA queues	   */	int		  queue_reserved; /* Number of reserved DMA queues */	int		  queue_slots;	/* Actual length of queuelist	   */	drm_queue_t	  **queuelist;	/* Vector of pointers to DMA queues */	drm_device_dma_t  *dma;		/* Optional pointer for DMA support */				/* Context support */	int		  irq;		/* Interrupt used by board	   */	__volatile__ long context_flag;	/* Context swapping flag	   */	__volatile__ long interrupt_flag; /* Interruption handler flag	   */	__volatile__ long dma_flag;	/* DMA dispatch flag		   */	struct timer_list timer;	/* Timer for delaying ctx switch   */	wait_queue_head_t context_wait; /* Processes waiting on ctx switch */	int		  last_checked;	/* Last context checked for DMA	   */	int		  last_context;	/* Last current context		   */	unsigned long	  last_switch;	/* jiffies at last context switch  */	struct tq_struct  tq;	cycles_t	  ctx_start;	cycles_t	  lck_start;#if DRM_DMA_HISTOGRAM	drm_histogram_t	  histo;#endif					/* Callback to X server for context switch				   and for heavy-handed reset. */	char		  buf[DRM_BSZ]; /* Output buffer		   */	char		  *buf_rp;	/* Read pointer			   */	char		  *buf_wp;	/* Write pointer		   */	char		  *buf_end;	/* End pointer			   */	struct fasync_struct *buf_async;/* Processes waiting for SIGIO	   */	wait_queue_head_t buf_readers;	/* Processes waiting to read	   */	wait_queue_head_t buf_writers;	/* Processes waiting to ctx switch */	#if defined(CONFIG_AGP) || defined(CONFIG_AGP_MODULE)	drm_agp_head_t    *agp;#endif	unsigned long     *ctx_bitmap;	void		  *dev_private;	drm_sigdata_t     sigdata; /* For block_all_signals */	sigset_t          sigmask;} drm_device_t;				/* Internal function definitions */				/* Misc. support (init.c) */extern int	     drm_flags;extern void	     drm_parse_options(char *s);extern int           drm_cpu_valid(void);				/* Device support (fops.c) */extern int	     drm_open_helper(struct inode *inode, struct file *filp,				     drm_device_t *dev);extern int	     drm_flush(struct file *filp);extern int	     drm_release(struct inode *inode, struct file *filp);extern int	     drm_fasync(int fd, struct file *filp, int on);extern ssize_t	     drm_read(struct file *filp, char *buf, size_t count,			      loff_t *off);extern int	     drm_write_string(drm_device_t *dev, const char *s);extern unsigned int  drm_poll(struct file *filp, struct poll_table_struct *wait);				/* Mapping support (vm.c) */#if LINUX_VERSION_CODE < 0x020317extern unsigned long drm_vm_nopage(struct vm_area_struct *vma,				   unsigned long address,				   int write_access);extern unsigned long drm_vm_shm_nopage(struct vm_area_struct *vma,				       unsigned long address,				       int write_access);extern unsigned long drm_vm_shm_nopage_lock(struct vm_area_struct *vma,					    unsigned long address,					    int write_access);extern unsigned long drm_vm_dma_nopage(struct vm_area_struct *vma,				       unsigned long address,				       int write_access);#else				/* Return type changed in 2.3.23 */extern struct page *drm_vm_nopage(struct vm_area_struct *vma,				  unsigned long address,				  int write_access);extern struct page *drm_vm_shm_nopage(struct vm_area_struct *vma,				      unsigned long address,				      int write_access);extern struct page *drm_vm_shm_nopage_lock(struct vm_area_struct *vma,					   unsigned long address,					   int write_access);extern struct page *drm_vm_dma_nopage(struct vm_area_struct *vma,				      unsigned long address,				      int write_access);#endifextern void	     drm_vm_open(struct vm_area_struct *vma);extern void	     drm_vm_close(struct vm_area_struct *vma);extern int	     drm_mmap_dma(struct file *filp,				  struct vm_area_struct *vma);extern int	     drm_mmap(struct file *filp, struct vm_area_struct *vma);				/* Proc support (proc.c) */extern int	     drm_proc_init(drm_device_t *dev);extern int	     drm_proc_cleanup(void);				/* Memory management support (memory.c) */extern void	     drm_mem_init(void);extern int	     drm_mem_info(char *buf, char **start, off_t offset,				  int len, int *eof, void *data);extern void	     *drm_alloc(size_t size, int area);extern void	     *drm_realloc(void *oldpt, size_t oldsize, size_t size,				  int area);extern char	     *drm_strdup(const char *s, int area);extern void	     drm_strfree(const char *s, int area);extern void	     drm_free(void *pt, size_t size, int area);extern unsigned long drm_alloc_pages(int order, int area);extern void	     drm_free_pages(unsigned long address, int order,				    int area);extern void	     *drm_ioremap(unsigned long offset, unsigned long size);extern void	     drm_ioremapfree(void *pt, unsigned long size);#if defined(CONFIG_AGP) || defined(CONFIG_AGP_MODULE)extern agp_memory    *drm_alloc_agp(int pages, u32 type);extern int           drm_free_agp(agp_memory *handle, int pages);extern int           drm_bind_agp(agp_memory *handle, unsigned int start);extern int           drm_unbind_agp(agp_memory *handle);#endif				/* Buffer management support (bufs.c) */extern int	     drm_order(unsigned long size);extern int	     drm_addmap(struct inode *inode, struct file *filp,				unsigned int cmd, unsigned long arg);extern int	     drm_addbufs(struct inode *inode, struct file *filp,				 unsigned int cmd, unsigned long arg);extern int	     drm_infobufs(struct inode *inode, struct file *filp,				  unsigned int cmd, unsigned long arg);extern int	     drm_markbufs(struct inode *inode, struct file *filp,				  unsigned int cmd, unsigned long arg);extern int	     drm_freebufs(struct inode *inode, struct file *filp,				  unsigned int cmd, unsigned long arg);extern int	     drm_mapbufs(struct inode *inode, struct file *filp,				 unsigned int cmd, unsigned long arg);				/* Buffer list management support (lists.c) */extern int	     drm_waitlist_create(drm_waitlist_t *bl, int count);extern int	     drm_waitlist_destroy(drm_waitlist_t *bl);extern int	     drm_waitlist_put(drm_waitlist_t *bl, drm_buf_t *buf);extern drm_buf_t     *drm_waitlist_get(drm_waitlist_t *bl);extern int	     drm_freelist_create(drm_freelist_t *bl, int count);extern int	     drm_freelist_destroy(drm_freelist_t *bl);extern int	     drm_freelist_put(drm_device_t *dev, drm_freelist_t *bl,				      drm_buf_t *buf);extern drm_buf_t     *drm_freelist_get(drm_freelist_t *bl, int block);				/* DMA support (gen_dma.c) */extern void	     drm_dma_setup(drm_device_t *dev);extern void	     drm_dma_takedown(drm_device_t *dev);extern void	     drm_free_buffer(drm_device_t *dev, drm_buf_t *buf);extern void	     drm_reclaim_buffers(drm_device_t *dev, pid_t pid);extern int	     drm_context_switch(drm_device_t *dev, int old, int new);extern int	     drm_context_switch_complete(drm_device_t *dev, int new);extern void	     drm_clear_next_buffer(drm_device_t *dev);extern int	     drm_select_queue(drm_device_t *dev,				      void (*wrapper)(unsigned long));extern int	     drm_dma_enqueue(drm_device_t *dev, drm_dma_t *dma);extern int	     drm_dma_get_buffers(drm_device_t *dev, drm_dma_t *dma);#if DRM_DMA_HISTOGRAMextern int	     drm_histogram_slot(unsigned long count);extern void	     drm_histogram_compute(drm_device_t *dev, drm_buf_t *buf);#endif				/* Misc. IOCTL support (ioctl.c) */extern int	     drm_irq_busid(struct inode *inode, struct file *filp,				   unsigned int cmd, unsigned long arg);extern int	     drm_getunique(struct inode *inode, struct file *filp,				   unsigned int cmd, unsigned long arg);extern int	     drm_setunique(struct inode *inode, struct file *filp,				   unsigned int cmd, unsigned long arg);				/* Context IOCTL support (context.c) */extern int	     drm_resctx(struct inode *inode, struct file *filp,				unsigned int cmd, unsigned long arg);extern int	     drm_addctx(struct inode *inode, struct file *filp,				unsigned int cmd, unsigned long arg);extern int	     drm_modctx(struct inode *inode, struct file *filp,				unsigned int cmd, unsigned long arg);extern int	     drm_getctx(struct inode *inode, struct file *filp,				unsigned int cmd, unsigned long arg);extern int	     drm_switchctx(struct inode *inode, struct file *filp,				   unsigned int cmd, unsigned long arg);extern int	     drm_newctx(struct inode *inode, struct file *filp,				unsigned int cmd, unsigned long arg);extern int	     drm_rmctx(struct inode *inode, struct file *filp,			       unsigned int cmd, unsigned long arg);				/* Drawable IOCTL support (drawable.c) */extern int	     drm_adddraw(struct inode *inode, struct file *filp,				 unsigned int cmd, unsigned long arg);extern int	     drm_rmdraw(struct inode *inode, struct file *filp,				unsigned int cmd, unsigned long arg);				/* Authentication IOCTL support (auth.c) */extern int	     drm_add_magic(drm_device_t *dev, drm_file_t *priv,				   drm_magic_t magic);extern int	     drm_remove_magic(drm_device_t *dev, drm_magic_t magic);extern int	     drm_getmagic(struct inode *inode, struct file *filp,				  unsigned int cmd, unsigned long arg);extern int	     drm_authmagic(struct inode *inode, struct file *filp,				   unsigned int cmd, unsigned long arg);				/* Locking IOCTL support (lock.c) */extern int	     drm_block(struct inode *inode, struct file *filp,			       unsigned int cmd, unsigned long arg);extern int	     drm_unblock(struct inode *inode, struct file *filp,				 unsigned int cmd, unsigned long arg);extern int	     drm_lock_take(__volatile__ unsigned int *lock,				   unsigned int context);extern int	     drm_lock_transfer(drm_device_t *dev,				       __volatile__ unsigned int *lock,				       unsigned int context);extern int	     drm_lock_free(drm_device_t *dev,				   __volatile__ unsigned int *lock,				   unsigned int context);extern int	     drm_finish(struct inode *inode, struct file *filp,				unsigned int cmd, unsigned long arg);extern int	     drm_flush_unblock(drm_device_t *dev, int context,				       drm_lock_flags_t flags);extern int	     drm_flush_block_and_flush(drm_device_t *dev, int context,					       drm_lock_flags_t flags);extern int           drm_notifier(void *priv);				/* Context Bitmap support (ctxbitmap.c) */extern int	     drm_ctxbitmap_init(drm_device_t *dev);extern void	     drm_ctxbitmap_cleanup(drm_device_t *dev);extern int	     drm_ctxbitmap_next(drm_device_t *dev);extern void	     drm_ctxbitmap_free(drm_device_t *dev, int ctx_handle);#if defined(CONFIG_AGP) || defined(CONFIG_AGP_MODULE)				/* AGP/GART support (agpsupport.c) */extern drm_agp_head_t *drm_agp_init(void);extern void           drm_agp_uninit(void);extern int            drm_agp_acquire(struct inode *inode, struct file *filp,				      unsigned int cmd, unsigned long arg);extern void           _drm_agp_release(void);extern int            drm_agp_release(struct inode *inode, struct file *filp,				      unsigned int cmd, unsigned long arg);extern int            drm_agp_enable(struct inode *inode, struct file *filp,				     unsigned int cmd, unsigned long arg);extern int            drm_agp_info(struct inode *inode, struct file *filp,				   unsigned int cmd, unsigned long arg);extern int            drm_agp_alloc(struct inode *inode, struct file *filp,				    unsigned int cmd, unsigned long arg);extern int            drm_agp_free(struct inode *inode, struct file *filp,				   unsigned int cmd, unsigned long arg);extern int            drm_agp_unbind(struct inode *inode, struct file *filp,				     unsigned int cmd, unsigned long arg);extern int            drm_agp_bind(struct inode *inode, struct file *filp,				   unsigned int cmd, unsigned long arg);extern agp_memory     *drm_agp_allocate_memory(size_t pages, u32 type);extern int            drm_agp_free_memory(agp_memory *handle);extern int            drm_agp_bind_memory(agp_memory *handle, off_t start);extern int            drm_agp_unbind_memory(agp_memory *handle);#endif#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -