user_tdrm.c revision 4bb656a129f7507823e9e6d6b98b1a02fd80ef89
1544a317d2595b382be2fb5166016e7c30c31b257mridge/*
23889d936787e03cdf934a7753a284e5949e12e88mridge *
33889d936787e03cdf934a7753a284e5949e12e88mridge *   Copyright (c) International Business Machines  Corp., 2001
43889d936787e03cdf934a7753a284e5949e12e88mridge *
53889d936787e03cdf934a7753a284e5949e12e88mridge *   This program is free software;  you can redistribute it and/or modify
63889d936787e03cdf934a7753a284e5949e12e88mridge *   it under the terms of the GNU General Public License as published by
73889d936787e03cdf934a7753a284e5949e12e88mridge *   the Free Software Foundation; either version 2 of the License, or
83889d936787e03cdf934a7753a284e5949e12e88mridge *   (at your option) any later version.
93889d936787e03cdf934a7753a284e5949e12e88mridge *
103889d936787e03cdf934a7753a284e5949e12e88mridge *   This program is distributed in the hope that it will be useful,
113889d936787e03cdf934a7753a284e5949e12e88mridge *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
123889d936787e03cdf934a7753a284e5949e12e88mridge *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
133889d936787e03cdf934a7753a284e5949e12e88mridge *   the GNU General Public License for more details.
143889d936787e03cdf934a7753a284e5949e12e88mridge *
153889d936787e03cdf934a7753a284e5949e12e88mridge *   You should have received a copy of the GNU General Public License
163889d936787e03cdf934a7753a284e5949e12e88mridge *   along with this program;  if not, write to the Free Software
173889d936787e03cdf934a7753a284e5949e12e88mridge *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
183889d936787e03cdf934a7753a284e5949e12e88mridge *
193889d936787e03cdf934a7753a284e5949e12e88mridge
204bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * This is the main of your user space test program,
214bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * which will open the correct kernel module, find the
224bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * file descriptor value and use that value to make
23544a317d2595b382be2fb5166016e7c30c31b257mridge * ioctl calls to the system
244bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak *
25544a317d2595b382be2fb5166016e7c30c31b257mridge *
26544a317d2595b382be2fb5166016e7c30c31b257mridge * author: Kai Zhao
27544a317d2595b382be2fb5166016e7c30c31b257mridge * date:   09/03/2003
28544a317d2595b382be2fb5166016e7c30c31b257mridge *
29544a317d2595b382be2fb5166016e7c30c31b257mridge */
30544a317d2595b382be2fb5166016e7c30c31b257mridge
31544a317d2595b382be2fb5166016e7c30c31b257mridge#include <stdio.h>
32544a317d2595b382be2fb5166016e7c30c31b257mridge#include <stdlib.h>
33544a317d2595b382be2fb5166016e7c30c31b257mridge#include <errno.h>
34544a317d2595b382be2fb5166016e7c30c31b257mridge#include <sys/stat.h>
35544a317d2595b382be2fb5166016e7c30c31b257mridge#include <sys/ioctl.h>
36544a317d2595b382be2fb5166016e7c30c31b257mridge#include <fcntl.h>
37544a317d2595b382be2fb5166016e7c30c31b257mridge#include <linux/kernel.h>
38544a317d2595b382be2fb5166016e7c30c31b257mridge#include <linux/errno.h>
39544a317d2595b382be2fb5166016e7c30c31b257mridge
40544a317d2595b382be2fb5166016e7c30c31b257mridge#include "../kernel_space/tdrm.h"
41544a317d2595b382be2fb5166016e7c30c31b257mridge#include "drm.h"
42544a317d2595b382be2fb5166016e7c30c31b257mridge
43544a317d2595b382be2fb5166016e7c30c31b257mridge
44544a317d2595b382be2fb5166016e7c30c31b257mridgestatic int tdrm_fd = -1;		/* file descriptor */
45544a317d2595b382be2fb5166016e7c30c31b257mridge
464bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modakint
47544a317d2595b382be2fb5166016e7c30c31b257mridgetdrmopen() {
48544a317d2595b382be2fb5166016e7c30c31b257mridge
49544a317d2595b382be2fb5166016e7c30c31b257mridge    dev_t devt;
50544a317d2595b382be2fb5166016e7c30c31b257mridge	struct stat     st;
51544a317d2595b382be2fb5166016e7c30c31b257mridge    int    rc = 0;
52544a317d2595b382be2fb5166016e7c30c31b257mridge
53544a317d2595b382be2fb5166016e7c30c31b257mridge    devt = makedev(TDRM_MAJOR, 0);
54544a317d2595b382be2fb5166016e7c30c31b257mridge
55544a317d2595b382be2fb5166016e7c30c31b257mridge    if (rc) {
56544a317d2595b382be2fb5166016e7c30c31b257mridge        if (errno == ENOENT) {
57544a317d2595b382be2fb5166016e7c30c31b257mridge            /* dev node does not exist. */
58544a317d2595b382be2fb5166016e7c30c31b257mridge            rc = mkdir(DEVICE_NAME, (S_IFDIR | S_IRWXU |
59544a317d2595b382be2fb5166016e7c30c31b257mridge                                                S_IRGRP | S_IXGRP |
60544a317d2595b382be2fb5166016e7c30c31b257mridge                                                S_IROTH | S_IXOTH));
61544a317d2595b382be2fb5166016e7c30c31b257mridge        } else {
62544a317d2595b382be2fb5166016e7c30c31b257mridge            printf("ERROR: Problem with Base dev directory.  Error code from stat() is %d\n\n", errno);
63544a317d2595b382be2fb5166016e7c30c31b257mridge        }
64544a317d2595b382be2fb5166016e7c30c31b257mridge
65544a317d2595b382be2fb5166016e7c30c31b257mridge    } else {
66544a317d2595b382be2fb5166016e7c30c31b257mridge        if (!(st.st_mode & S_IFDIR)) {
67544a317d2595b382be2fb5166016e7c30c31b257mridge            rc = unlink(DEVICE_NAME);
68544a317d2595b382be2fb5166016e7c30c31b257mridge            if (!rc) {
69544a317d2595b382be2fb5166016e7c30c31b257mridge                rc = mkdir(DEVICE_NAME, (S_IFDIR | S_IRWXU |
70544a317d2595b382be2fb5166016e7c30c31b257mridge                                                S_IRGRP | S_IXGRP |
71544a317d2595b382be2fb5166016e7c30c31b257mridge                                                S_IROTH | S_IXOTH));
72544a317d2595b382be2fb5166016e7c30c31b257mridge            }
73544a317d2595b382be2fb5166016e7c30c31b257mridge        }
74544a317d2595b382be2fb5166016e7c30c31b257mridge    }
75544a317d2595b382be2fb5166016e7c30c31b257mridge
76544a317d2595b382be2fb5166016e7c30c31b257mridge
77544a317d2595b382be2fb5166016e7c30c31b257mridge    /*
78544a317d2595b382be2fb5166016e7c30c31b257mridge     * Check for the /dev/tbase node, and create if it does not
79544a317d2595b382be2fb5166016e7c30c31b257mridge     * exist.
80544a317d2595b382be2fb5166016e7c30c31b257mridge     */
81544a317d2595b382be2fb5166016e7c30c31b257mridge    rc = stat(DEVICE_NAME, &st);
82544a317d2595b382be2fb5166016e7c30c31b257mridge    if (rc) {
83544a317d2595b382be2fb5166016e7c30c31b257mridge        if (errno == ENOENT) {
84544a317d2595b382be2fb5166016e7c30c31b257mridge            /* dev node does not exist */
85544a317d2595b382be2fb5166016e7c30c31b257mridge            rc = mknod(DEVICE_NAME, (S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP), devt);
86544a317d2595b382be2fb5166016e7c30c31b257mridge        } else {
87544a317d2595b382be2fb5166016e7c30c31b257mridge            printf("ERROR:Problem with tbase device node directory.  Error code form stat() is %d\n\n", errno);
88544a317d2595b382be2fb5166016e7c30c31b257mridge        }
89544a317d2595b382be2fb5166016e7c30c31b257mridge
90544a317d2595b382be2fb5166016e7c30c31b257mridge    } else {
91544a317d2595b382be2fb5166016e7c30c31b257mridge        /*
92544a317d2595b382be2fb5166016e7c30c31b257mridge         * /dev/tbase CHR device exists.  Check to make sure it is for a
93544a317d2595b382be2fb5166016e7c30c31b257mridge         * block device and that it has the right major and minor.
94544a317d2595b382be2fb5166016e7c30c31b257mridge         */
95544a317d2595b382be2fb5166016e7c30c31b257mridge        if ((!(st.st_mode & S_IFCHR)) ||
96544a317d2595b382be2fb5166016e7c30c31b257mridge             (st.st_rdev != devt)) {
97544a317d2595b382be2fb5166016e7c30c31b257mridge
98544a317d2595b382be2fb5166016e7c30c31b257mridge            /* Recreate the dev node. */
99544a317d2595b382be2fb5166016e7c30c31b257mridge            rc = unlink(DEVICE_NAME);
100544a317d2595b382be2fb5166016e7c30c31b257mridge            if (!rc) {
101544a317d2595b382be2fb5166016e7c30c31b257mridge                rc = mknod(DEVICE_NAME, (S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP), devt);
102544a317d2595b382be2fb5166016e7c30c31b257mridge            }
103544a317d2595b382be2fb5166016e7c30c31b257mridge        }
104544a317d2595b382be2fb5166016e7c30c31b257mridge    }
105544a317d2595b382be2fb5166016e7c30c31b257mridge
106544a317d2595b382be2fb5166016e7c30c31b257mridge    tdrm_fd = open(DEVICE_NAME, O_RDWR);
107544a317d2595b382be2fb5166016e7c30c31b257mridge
108544a317d2595b382be2fb5166016e7c30c31b257mridge    if (tdrm_fd < 0) {
109544a317d2595b382be2fb5166016e7c30c31b257mridge        printf("ERROR: Open of device %s failed %d errno = %d\n", DEVICE_NAME,tdrm_fd, errno);
110544a317d2595b382be2fb5166016e7c30c31b257mridge        return errno;
111544a317d2595b382be2fb5166016e7c30c31b257mridge    }
112544a317d2595b382be2fb5166016e7c30c31b257mridge    else {
113544a317d2595b382be2fb5166016e7c30c31b257mridge        printf("Device opened successfully \n");
114544a317d2595b382be2fb5166016e7c30c31b257mridge        return 0;
115544a317d2595b382be2fb5166016e7c30c31b257mridge    }
116544a317d2595b382be2fb5166016e7c30c31b257mridge
117544a317d2595b382be2fb5166016e7c30c31b257mridge}
118544a317d2595b382be2fb5166016e7c30c31b257mridge
1194bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modakint
120544a317d2595b382be2fb5166016e7c30c31b257mridgetdrmclose() {
121544a317d2595b382be2fb5166016e7c30c31b257mridge
122544a317d2595b382be2fb5166016e7c30c31b257mridge	if (tdrm_fd != -1) {
123544a317d2595b382be2fb5166016e7c30c31b257mridge		close (tdrm_fd);
124544a317d2595b382be2fb5166016e7c30c31b257mridge		tdrm_fd = -1;
125544a317d2595b382be2fb5166016e7c30c31b257mridge	}
126544a317d2595b382be2fb5166016e7c30c31b257mridge}
127544a317d2595b382be2fb5166016e7c30c31b257mridge
128544a317d2595b382be2fb5166016e7c30c31b257mridge
129544a317d2595b382be2fb5166016e7c30c31b257mridgeint main() {
130544a317d2595b382be2fb5166016e7c30c31b257mridge	int rc;
131544a317d2595b382be2fb5166016e7c30c31b257mridge
132544a317d2595b382be2fb5166016e7c30c31b257mridge	/* open the module */
133544a317d2595b382be2fb5166016e7c30c31b257mridge	rc = tdrmopen();
134544a317d2595b382be2fb5166016e7c30c31b257mridge        if (rc ) {
135544a317d2595b382be2fb5166016e7c30c31b257mridge                printf("Test DRM Driver may not be loaded\n");
136544a317d2595b382be2fb5166016e7c30c31b257mridge                exit(1);
137544a317d2595b382be2fb5166016e7c30c31b257mridge        }
138544a317d2595b382be2fb5166016e7c30c31b257mridge
139544a317d2595b382be2fb5166016e7c30c31b257mridge	printf("\tBegin drm read system ioctl\n");
140544a317d2595b382be2fb5166016e7c30c31b257mridge	//
141544a317d2595b382be2fb5166016e7c30c31b257mridge	drm_auth_t auth;
142544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd ,DRM_IOCTL_GET_MAGIC , &auth ))
143544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(get_magic) test\n");
144544a317d2595b382be2fb5166016e7c30c31b257mridge	else
145544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(get_magic) test\n");
146544a317d2595b382be2fb5166016e7c30c31b257mridge
147544a317d2595b382be2fb5166016e7c30c31b257mridge	//
148544a317d2595b382be2fb5166016e7c30c31b257mridge	drm_stats_t stats;
149544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd , DRM_IOCTL_GET_STATS , &stats ))
150544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(get_status) test\n");
151544a317d2595b382be2fb5166016e7c30c31b257mridge	else
152544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(get_status) test\n");
153544a317d2595b382be2fb5166016e7c30c31b257mridge
154544a317d2595b382be2fb5166016e7c30c31b257mridge	/*--------------------------------------------------------------
155544a317d2595b382be2fb5166016e7c30c31b257mridge	 *                      for drm read write ioctl test
156544a317d2595b382be2fb5166016e7c30c31b257mridge	 */
1574bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak
158544a317d2595b382be2fb5166016e7c30c31b257mridge	printf("\tBegin read write ioctl test\n");
159544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd , DRM_IOCTL_IRQ_BUSID))
160544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(irq_busid)\n");
161544a317d2595b382be2fb5166016e7c30c31b257mridge	else
162544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(irq_busid)\n");
163544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd , DRM_IOCTL_GET_CLIENT))
164544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(get_client)\n");
165544a317d2595b382be2fb5166016e7c30c31b257mridge	else
166544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(get_client)\n");
167544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd , DRM_IOCTL_BLOCK))
168544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(block)\n");
169544a317d2595b382be2fb5166016e7c30c31b257mridge	else
170544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(block)\n");
171544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd , DRM_IOCTL_UNBLOCK))
172544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(unblock)\n");
173544a317d2595b382be2fb5166016e7c30c31b257mridge	else
174544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(unblock)\n");
175544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd , DRM_IOCTL_ADD_CTX))
176544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(addctx)\n");
177544a317d2595b382be2fb5166016e7c30c31b257mridge	else
178544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(addctx)\n");
179544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd , DRM_IOCTL_RM_CTX))
180544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(rmctx)\n");
181544a317d2595b382be2fb5166016e7c30c31b257mridge	else
182544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(rmctx)\n");
183544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd , DRM_IOCTL_GET_CTX))
184544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(getctx)\n");
185544a317d2595b382be2fb5166016e7c30c31b257mridge	else
186544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(getctx)\n");
187544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd , DRM_IOCTL_ADD_DRAW))
188544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(adddraw)\n");
189544a317d2595b382be2fb5166016e7c30c31b257mridge	else
190544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(adddraw)\n");
191544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd , DRM_IOCTL_RM_DRAW))
192544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(rmdraw)\n");
193544a317d2595b382be2fb5166016e7c30c31b257mridge	else
194544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(rmdraw)\n");
195544a317d2595b382be2fb5166016e7c30c31b257mridge
196544a317d2595b382be2fb5166016e7c30c31b257mridge
197544a317d2595b382be2fb5166016e7c30c31b257mridge	/* test drm stub_register */
198544a317d2595b382be2fb5166016e7c30c31b257mridge
199544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, TDRM_STUB_REGISTER))
200544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm stub_register test\n");
201544a317d2595b382be2fb5166016e7c30c31b257mridge	else
202544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm stub_register test\n");
203544a317d2595b382be2fb5166016e7c30c31b257mridge
2044bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak	// test drm DRM(agp_uninit)
205544a317d2595b382be2fb5166016e7c30c31b257mridge
206544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, TDRM_UNINIT_AGP))
207544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on DRM(agp_uninit) test\n");
208544a317d2595b382be2fb5166016e7c30c31b257mridge	else
209544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on DRM(agp_uninit) test\n");
210544a317d2595b382be2fb5166016e7c30c31b257mridge
2114bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak	// test drm DRM(agp_init)
212544a317d2595b382be2fb5166016e7c30c31b257mridge
213544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, TDRM_INIT_AGP))
214544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on DRM(agp_init) test\n");
215544a317d2595b382be2fb5166016e7c30c31b257mridge	else
216544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on DRM(agp_init) test\n");
217544a317d2595b382be2fb5166016e7c30c31b257mridge
2184bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak	// test drm stub_unregister
219544a317d2595b382be2fb5166016e7c30c31b257mridge
220544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, TDRM_STUB_UNREGISTER))
221544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm stub_unregister test\n");
222544a317d2595b382be2fb5166016e7c30c31b257mridge	else
223544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm stub_unregister test\n");
224544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm add magic
225544a317d2595b382be2fb5166016e7c30c31b257mridge		if(ioctl(tdrm_fd, TDRM_ADD_MAGIC))
226544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(add_magic) test\n");
227544a317d2595b382be2fb5166016e7c30c31b257mridge	else
228544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(add_magic) test\n");
229544a317d2595b382be2fb5166016e7c30c31b257mridge
230544a317d2595b382be2fb5166016e7c30c31b257mridge
231544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm remove magic
232544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, TDRM_REMOVE_MAGIC))
233544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(remove_magic) test\n");
234544a317d2595b382be2fb5166016e7c30c31b257mridge	else
235544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(remove_magic) test\n");
236544a317d2595b382be2fb5166016e7c30c31b257mridge
237544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm alloc pages
238544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, TDRM_ALLOC_PAGES))
239544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(alloc_pages) test\n");
240544a317d2595b382be2fb5166016e7c30c31b257mridge	else
241544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(alloc_pages) test\n");
242544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm free pages
243544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, TDRM_FREE_PAGES))
244544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(free_pages) test\n");
245544a317d2595b382be2fb5166016e7c30c31b257mridge	else
246544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(free_pages) test\n");
247544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm ctxbitmap_cleanup
248544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, TDRM_CTXBITMAP_UNINIT))
249544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(ctxbitmap_cleanup) test\n");
250544a317d2595b382be2fb5166016e7c30c31b257mridge	else
251544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(ctxbitmap_cleanup) test\n");
252544a317d2595b382be2fb5166016e7c30c31b257mridge
253544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm ctxbitmap init
254544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, TDRM_CTXBITMAP_INIT))
255544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(ctxbitmap_init) test\n");
256544a317d2595b382be2fb5166016e7c30c31b257mridge	else
257544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(ctxbitmap_init) test\n");
258544a317d2595b382be2fb5166016e7c30c31b257mridge
259544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_version_t version;
260544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_VERSION,&version))
261544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(version) test\n");
262544a317d2595b382be2fb5166016e7c30c31b257mridge	else
263544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(version) test\n");
264544a317d2595b382be2fb5166016e7c30c31b257mridge
265544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_auth_t myauth;
266544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_GET_MAGIC,&myauth))
267544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(get_magic) test\n");
268544a317d2595b382be2fb5166016e7c30c31b257mridge	else
269544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(get_magic) test\n");
270544a317d2595b382be2fb5166016e7c30c31b257mridge
271544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_AUTH_MAGIC,&auth))
272544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm authmagic test\n");
273544a317d2595b382be2fb5166016e7c30c31b257mridge	else
274544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm authmagic test\n");
275544a317d2595b382be2fb5166016e7c30c31b257mridge
2764bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak	//  test for drm_agpsupport.h
277544a317d2595b382be2fb5166016e7c30c31b257mridge	/*
278544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_AGP_RELEASE))
279544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_release) test\n");
280544a317d2595b382be2fb5166016e7c30c31b257mridge	else
281544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_release) test\n");
282544a317d2595b382be2fb5166016e7c30c31b257mridge	*/
283544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_AGP_ACQUIRE))
284544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_acquire) test\n");
285544a317d2595b382be2fb5166016e7c30c31b257mridge	else
286544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_acquire) test\n");
287544a317d2595b382be2fb5166016e7c30c31b257mridge
288544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_AGP_RELEASE))
289544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_release) test\n");
290544a317d2595b382be2fb5166016e7c30c31b257mridge	else
291544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_release) test\n");
292544a317d2595b382be2fb5166016e7c30c31b257mridge
293544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_AGP_ACQUIRE))
294544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_acquire) test\n");
295544a317d2595b382be2fb5166016e7c30c31b257mridge	else
296544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_acquire) test\n");
297544a317d2595b382be2fb5166016e7c30c31b257mridge
298544a317d2595b382be2fb5166016e7c30c31b257mridge
299544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_agp_info_t agp_info;
300544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_AGP_INFO,&agp_info))
301544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_info) test\n");
302544a317d2595b382be2fb5166016e7c30c31b257mridge	else
303544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_info) test\n");
304544a317d2595b382be2fb5166016e7c30c31b257mridge
305544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_agp_buffer_t agp_buffer;
306544a317d2595b382be2fb5166016e7c30c31b257mridge	agp_buffer.size = 64;
307544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_AGP_ALLOC,&agp_buffer))
308544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_alloc) test\n");
309544a317d2595b382be2fb5166016e7c30c31b257mridge	else
310544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_alloc) test\n");
311544a317d2595b382be2fb5166016e7c30c31b257mridge
312544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_agp_binding_t bind_buffer;
313544a317d2595b382be2fb5166016e7c30c31b257mridge	bind_buffer.handle = agp_buffer.handle;
314544a317d2595b382be2fb5166016e7c30c31b257mridge	bind_buffer.offset = 64;
315544a317d2595b382be2fb5166016e7c30c31b257mridge
316544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_AGP_BIND,&bind_buffer))
317544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_bind) test\n");
318544a317d2595b382be2fb5166016e7c30c31b257mridge	else
319544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_bind) test\n");
320544a317d2595b382be2fb5166016e7c30c31b257mridge
321544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_AGP_UNBIND,&bind_buffer))
322544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_unbind) test\n");
323544a317d2595b382be2fb5166016e7c30c31b257mridge	else
324544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_unbind) test\n");
325544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_AGP_FREE,&agp_buffer))
326544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_free) test\n");
327544a317d2595b382be2fb5166016e7c30c31b257mridge	else
328544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_free) test\n");
329544a317d2595b382be2fb5166016e7c30c31b257mridge
330544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm_ctxbitmap.h
331544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_ctx_t getctx;
332544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_GET_CTX,&getctx))
333544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getctx) test\n");
334544a317d2595b382be2fb5166016e7c30c31b257mridge	else
335544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getctx) test\n");
336544a317d2595b382be2fb5166016e7c30c31b257mridge
337544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_ctx_t ctx;
338544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_ADD_CTX,&ctx))
339544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(addctx) test\n");
340544a317d2595b382be2fb5166016e7c30c31b257mridge	else
341544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(addctx) test\n");
342544a317d2595b382be2fb5166016e7c30c31b257mridge
343544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_RM_CTX,&ctx))
344544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(rmctx) test\n");
345544a317d2595b382be2fb5166016e7c30c31b257mridge	else
346544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(rmctx) test\n");
347544a317d2595b382be2fb5166016e7c30c31b257mridge
348544a317d2595b382be2fb5166016e7c30c31b257mridge	/*
349544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_ctx_priv_map_t map;
350544a317d2595b382be2fb5166016e7c30c31b257mridge	memset(&map,0,sizeof(drm_ctx_priv_map_t));
351544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_GET_SAREA_CTX,&map))
352544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getsareactx) test\n");
353544a317d2595b382be2fb5166016e7c30c31b257mridge	else
354544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getsareactx) test\n");
355544a317d2595b382be2fb5166016e7c30c31b257mridge	*/
356544a317d2595b382be2fb5166016e7c30c31b257mridge	// for drm_drawtable.h
357544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_draw_t draw;
358544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_ADD_DRAW,&draw))
359544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(adddraw) test\n");
360544a317d2595b382be2fb5166016e7c30c31b257mridge	else
361544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(adddraw) test\n");
362544a317d2595b382be2fb5166016e7c30c31b257mridge
363544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_RM_DRAW,&draw))
364544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(rmdraw) test\n");
365544a317d2595b382be2fb5166016e7c30c31b257mridge	else
366544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(rmdraw) test\n");
367544a317d2595b382be2fb5166016e7c30c31b257mridge
368544a317d2595b382be2fb5166016e7c30c31b257mridge	//for drm_ioctl.h//
369544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_stats_t status;
370544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_GET_STATS,&status))
371544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getstatus) test\n");
372544a317d2595b382be2fb5166016e7c30c31b257mridge	else
373544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getstatus) test\n");
374544a317d2595b382be2fb5166016e7c30c31b257mridge
375544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_client_t client;
376544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_GET_CLIENT,&client))
377544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getclient) test\n");
378544a317d2595b382be2fb5166016e7c30c31b257mridge	else
379544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getclient) test\n");
380544a317d2595b382be2fb5166016e7c30c31b257mridge	/*
381544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_map_t getmap;
382544a317d2595b382be2fb5166016e7c30c31b257mridge	getmap.offset = 0;
383544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_GET_MAP,&getmap))
384544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getmap) test\n");
385544a317d2595b382be2fb5166016e7c30c31b257mridge	else
386544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getmap) test\n");
387544a317d2595b382be2fb5166016e7c30c31b257mridge	*/
388544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_unique_t unique;
389544a317d2595b382be2fb5166016e7c30c31b257mridge	unique.unique_len = 0;
390544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_GET_UNIQUE,&unique))
391544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getunique) test\n");
392544a317d2595b382be2fb5166016e7c30c31b257mridge	else
393544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getunique) test\n");
394544a317d2595b382be2fb5166016e7c30c31b257mridge	/*
395544a317d2595b382be2fb5166016e7c30c31b257mridge	if(ioctl(tdrm_fd, DRM_IOCTL_SET_UNIQUE,&unique))
396544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(setunique) test\n");
397544a317d2595b382be2fb5166016e7c30c31b257mridge
398544a317d2595b382be2fb5166016e7c30c31b257mridge	else
399544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(setunique) test\n");
400544a317d2595b382be2fb5166016e7c30c31b257mridge
401544a317d2595b382be2fb5166016e7c30c31b257mridge	*/
402544a317d2595b382be2fb5166016e7c30c31b257mridge	rc = tdrmclose();
403544a317d2595b382be2fb5166016e7c30c31b257mridge	if (rc ) {
404544a317d2595b382be2fb5166016e7c30c31b257mridge                printf("Test MOD Driver may not be closed\n");
405544a317d2595b382be2fb5166016e7c30c31b257mridge                exit(1);
406544a317d2595b382be2fb5166016e7c30c31b257mridge        }
407544a317d2595b382be2fb5166016e7c30c31b257mridge
408544a317d2595b382be2fb5166016e7c30c31b257mridge}
409