drm: lindent the drm directory.
[deliverable/linux.git] / drivers / char / drm / sis_ds.h
CommitLineData
1da177e4
LT
1/* 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:
b5e89ed5 13 *
1da177e4
LT
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.
b5e89ed5 17 *
1da177e4
LT
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.
b5e89ed5 25 *
1da177e4
LT
26 * Authors:
27 * Sung-Ching Lin <sclin@sis.com.tw>
b5e89ed5 28 *
1da177e4
LT
29 */
30
31#ifndef __SIS_DS_H__
32#define __SIS_DS_H__
33
34/* Set Data Structure */
35
36#define SET_SIZE 5000
37
38typedef unsigned int ITEM_TYPE;
39
40typedef struct {
41 ITEM_TYPE val;
42 int alloc_next, free_next;
43} list_item_t;
44
45typedef struct {
46 int alloc;
47 int free;
48 int trace;
49 list_item_t list[SET_SIZE];
50} set_t;
51
52set_t *setInit(void);
b5e89ed5
DA
53int setAdd(set_t * set, ITEM_TYPE item);
54int setDel(set_t * set, ITEM_TYPE item);
55int setFirst(set_t * set, ITEM_TYPE * item);
56int setNext(set_t * set, ITEM_TYPE * item);
57int setDestroy(set_t * set);
1da177e4
LT
58
59/*
60 * GLX Hardware Device Driver common code
61 * Copyright (C) 1999 Wittawat Yamwong
62 *
63 * Permission is hereby granted, free of charge, to any person obtaining a
64 * copy of this software and associated documentation files (the "Software"),
65 * to deal in the Software without restriction, including without limitation
66 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
67 * and/or sell copies of the Software, and to permit persons to whom the
68 * Software is furnished to do so, subject to the following conditions:
69 *
70 * The above copyright notice and this permission notice shall be included
71 * in all copies or substantial portions of the Software.
72 *
73 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
74 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
75 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
b5e89ed5
DA
76 * WITTAWAT YAMWONG, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
77 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
78 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
1da177e4
LT
79 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
80 *
81 */
82
83struct mem_block_t {
84 struct mem_block_t *next;
85 struct mem_block_t *heap;
b5e89ed5 86 int ofs, size;
1da177e4
LT
87 int align;
88 unsigned int free:1;
89 unsigned int reserved:1;
90};
91typedef struct mem_block_t TMemBlock;
92typedef struct mem_block_t *PMemBlock;
93
94/* a heap is just the first block in a chain */
95typedef struct mem_block_t memHeap_t;
96
97static __inline__ int mmBlockSize(PMemBlock b)
98{
99 return b->size;
100}
101
102static __inline__ int mmOffset(PMemBlock b)
103{
104 return b->ofs;
105}
106
107static __inline__ void mmMarkReserved(PMemBlock b)
108{
109 b->reserved = 1;
110}
111
b5e89ed5 112/*
1da177e4
LT
113 * input: total size in bytes
114 * return: a heap pointer if OK, NULL if error
115 */
b5e89ed5 116memHeap_t *mmInit(int ofs, int size);
1da177e4
LT
117
118/*
119 * Allocate 'size' bytes with 2^align2 bytes alignment,
120 * restrict the search to free memory after 'startSearch'
121 * depth and back buffers should be in different 4mb banks
122 * to get better page hits if possible
123 * input: size = size of block
124 * align2 = 2^align2 bytes alignment
125 * startSearch = linear offset from start of heap to begin search
126 * return: pointer to the allocated block, 0 if error
127 */
b5e89ed5 128PMemBlock mmAllocMem(memHeap_t * heap, int size, int align2, int startSearch);
1da177e4
LT
129
130/*
131 * Returns 1 if the block 'b' is part of the heap 'heap'
132 */
b5e89ed5 133int mmBlockInHeap(PMemBlock heap, PMemBlock b);
1da177e4
LT
134
135/*
136 * Free block starts at offset
137 * input: pointer to a block
138 * return: 0 if OK, -1 if error
139 */
b5e89ed5 140int mmFreeMem(PMemBlock b);
1da177e4
LT
141
142/* For debuging purpose. */
b5e89ed5 143void mmDumpMemInfo(memHeap_t * mmInit);
1da177e4 144
b5e89ed5 145#endif /* __SIS_DS_H__ */
This page took 0.05861 seconds and 5 git commands to generate.