OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [char/] [drm/] [sis_ds.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/* sis_ds.h -- Private header for Direct Rendering Manager -*- linux-c -*-
2
 * Created: Mon Jan  4 10:05:05 1999 by sclin@sis.com.tw
3
 *
4
 * Copyright 2000 Silicon Integrated Systems Corp, Inc., HsinChu, Taiwan.
5
 * All rights reserved.
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 (including the next
15
 * paragraph) shall be included in all copies or substantial portions of the
16
 * Software.
17
 *
18
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
21
 * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24
 * DEALINGS IN THE SOFTWARE.
25
 *
26
 * Authors:
27
 *    Sung-Ching Lin <sclin@sis.com.tw>
28
 *
29
 */
30
 
31
#ifndef _sis_ds_h_
32
#define _sis_ds_h_
33
 
34
/* Set Data Structure */
35
 
36
#define SET_SIZE 5000
37
#define MALLOC(s) kmalloc(s, GFP_KERNEL)
38
#define FREE(s) kfree(s)
39
 
40
typedef unsigned int ITEM_TYPE;
41
 
42
typedef struct {
43
  ITEM_TYPE val;
44
  int alloc_next, free_next;
45
} list_item_t;
46
 
47
typedef struct {
48
  int alloc;
49
  int free;
50
  int trace;
51
  list_item_t list[SET_SIZE];
52
} set_t;
53
 
54
set_t *setInit(void);
55
int setAdd(set_t *set, ITEM_TYPE item);
56
int setDel(set_t *set, ITEM_TYPE item);
57
int setFirst(set_t *set, ITEM_TYPE *item);
58
int setNext(set_t *set, ITEM_TYPE *item);
59
int setDestroy(set_t *set);
60
 
61
#endif
62
 
63
/*
64
 * GLX Hardware Device Driver common code
65
 * Copyright (C) 1999 Keith Whitwell
66
 *
67
 * Permission is hereby granted, free of charge, to any person obtaining a
68
 * copy of this software and associated documentation files (the "Software"),
69
 * to deal in the Software without restriction, including without limitation
70
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
71
 * and/or sell copies of the Software, and to permit persons to whom the
72
 * Software is furnished to do so, subject to the following conditions:
73
 *
74
 * The above copyright notice and this permission notice shall be included
75
 * in all copies or substantial portions of the Software.
76
 *
77
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
78
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
79
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
80
 * KEITH WHITWELL, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
81
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
82
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
83
 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
84
 *
85
 */
86
 
87
#ifndef MM_INC
88
#define MM_INC
89
 
90
struct mem_block_t {
91
  struct mem_block_t *next;
92
  struct mem_block_t *heap;
93
  int ofs,size;
94
  int align;
95
  int free:1;
96
  int reserved:1;
97
};
98
typedef struct mem_block_t TMemBlock;
99
typedef struct mem_block_t *PMemBlock;
100
 
101
/* a heap is just the first block in a chain */
102
typedef struct mem_block_t memHeap_t;
103
 
104
static __inline__ int mmBlockSize(PMemBlock b)
105
{ return b->size; }
106
 
107
static __inline__ int mmOffset(PMemBlock b)
108
{ return b->ofs; }
109
 
110
static __inline__ void mmMarkReserved(PMemBlock b)
111
{ b->reserved = 1; }
112
 
113
/*
114
 * input: total size in bytes
115
 * return: a heap pointer if OK, NULL if error
116
 */
117
memHeap_t *mmInit( int ofs, int size );
118
 
119
 
120
 
121
memHeap_t *mmAddRange( memHeap_t *heap,
122
                       int ofs,
123
                       int size );
124
 
125
 
126
/*
127
 * Allocate 'size' bytes with 2^align2 bytes alignment,
128
 * restrict the search to free memory after 'startSearch'
129
 * depth and back buffers should be in different 4mb banks
130
 * to get better page hits if possible
131
 * input:       size = size of block
132
 *              align2 = 2^align2 bytes alignment
133
 *              startSearch = linear offset from start of heap to begin search
134
 * return: pointer to the allocated block, 0 if error
135
 */
136
PMemBlock  mmAllocMem( memHeap_t *heap, int size, int align2, int startSearch );
137
 
138
/*
139
 * Free block starts at offset
140
 * input: pointer to a block
141
 * return: 0 if OK, -1 if error
142
 */
143
int  mmFreeMem( PMemBlock b );
144
 
145
/*
146
 * Reserve 'size' bytes block start at offset
147
 * This is used to prevent allocation of memory already used
148
 * by the X server for the front buffer, pixmaps, and cursor
149
 * input: size, offset
150
 * output: 0 if OK, -1 if error
151
 */
152
int mmReserveMem( memHeap_t *heap, int offset,int size );
153
int mmFreeReserved( memHeap_t *heap, int offset );
154
 
155
/*
156
 * destroy MM
157
 */
158
void mmDestroy( memHeap_t *mmInit );
159
 
160
/* For debuging purpose. */
161
void mmDumpMemInfo( memHeap_t *mmInit );
162
 
163
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.