user_tdrm.c revision 4548c6cf9bcdd96d8303caa4130ab638b61f8a30
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
174548c6cf9bcdd96d8303caa4130ab638b61f8a30Wanlong Gao *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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
43544a317d2595b382be2fb5166016e7c30c31b257mridgestatic int tdrm_fd = -1;		/* file descriptor */
44544a317d2595b382be2fb5166016e7c30c31b257mridge
454bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modakint
46544a317d2595b382be2fb5166016e7c30c31b257mridgetdrmopen() {
47544a317d2595b382be2fb5166016e7c30c31b257mridge
48544a317d2595b382be2fb5166016e7c30c31b257mridge    dev_t devt;
49544a317d2595b382be2fb5166016e7c30c31b257mridge	struct stat     st;
50544a317d2595b382be2fb5166016e7c30c31b257mridge    int    rc = 0;
51544a317d2595b382be2fb5166016e7c30c31b257mridge
52544a317d2595b382be2fb5166016e7c30c31b257mridge    devt = makedev(TDRM_MAJOR, 0);
53544a317d2595b382be2fb5166016e7c30c31b257mridge
54544a317d2595b382be2fb5166016e7c30c31b257mridge    if (rc) {
55544a317d2595b382be2fb5166016e7c30c31b257mridge        if (errno == ENOENT) {
56544a317d2595b382be2fb5166016e7c30c31b257mridge            /* dev node does not exist. */
57544a317d2595b382be2fb5166016e7c30c31b257mridge            rc = mkdir(DEVICE_NAME, (S_IFDIR | S_IRWXU |
58544a317d2595b382be2fb5166016e7c30c31b257mridge                                                S_IRGRP | S_IXGRP |
59544a317d2595b382be2fb5166016e7c30c31b257mridge                                                S_IROTH | S_IXOTH));
60544a317d2595b382be2fb5166016e7c30c31b257mridge        } else {
61544a317d2595b382be2fb5166016e7c30c31b257mridge            printf("ERROR: Problem with Base dev directory.  Error code from stat() is %d\n\n", errno);
62544a317d2595b382be2fb5166016e7c30c31b257mridge        }
63544a317d2595b382be2fb5166016e7c30c31b257mridge
64544a317d2595b382be2fb5166016e7c30c31b257mridge    } else {
65544a317d2595b382be2fb5166016e7c30c31b257mridge        if (!(st.st_mode & S_IFDIR)) {
66544a317d2595b382be2fb5166016e7c30c31b257mridge            rc = unlink(DEVICE_NAME);
67544a317d2595b382be2fb5166016e7c30c31b257mridge            if (!rc) {
68544a317d2595b382be2fb5166016e7c30c31b257mridge                rc = mkdir(DEVICE_NAME, (S_IFDIR | S_IRWXU |
69544a317d2595b382be2fb5166016e7c30c31b257mridge                                                S_IRGRP | S_IXGRP |
70544a317d2595b382be2fb5166016e7c30c31b257mridge                                                S_IROTH | S_IXOTH));
71544a317d2595b382be2fb5166016e7c30c31b257mridge            }
72544a317d2595b382be2fb5166016e7c30c31b257mridge        }
73544a317d2595b382be2fb5166016e7c30c31b257mridge    }
74544a317d2595b382be2fb5166016e7c30c31b257mridge
75544a317d2595b382be2fb5166016e7c30c31b257mridge    /*
76544a317d2595b382be2fb5166016e7c30c31b257mridge     * Check for the /dev/tbase node, and create if it does not
77544a317d2595b382be2fb5166016e7c30c31b257mridge     * exist.
78544a317d2595b382be2fb5166016e7c30c31b257mridge     */
79544a317d2595b382be2fb5166016e7c30c31b257mridge    rc = stat(DEVICE_NAME, &st);
80544a317d2595b382be2fb5166016e7c30c31b257mridge    if (rc) {
81544a317d2595b382be2fb5166016e7c30c31b257mridge        if (errno == ENOENT) {
82544a317d2595b382be2fb5166016e7c30c31b257mridge            /* dev node does not exist */
83544a317d2595b382be2fb5166016e7c30c31b257mridge            rc = mknod(DEVICE_NAME, (S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP), devt);
84544a317d2595b382be2fb5166016e7c30c31b257mridge        } else {
85544a317d2595b382be2fb5166016e7c30c31b257mridge            printf("ERROR:Problem with tbase device node directory.  Error code form stat() is %d\n\n", errno);
86544a317d2595b382be2fb5166016e7c30c31b257mridge        }
87544a317d2595b382be2fb5166016e7c30c31b257mridge
88544a317d2595b382be2fb5166016e7c30c31b257mridge    } else {
89544a317d2595b382be2fb5166016e7c30c31b257mridge        /*
90544a317d2595b382be2fb5166016e7c30c31b257mridge         * /dev/tbase CHR device exists.  Check to make sure it is for a
91544a317d2595b382be2fb5166016e7c30c31b257mridge         * block device and that it has the right major and minor.
92544a317d2595b382be2fb5166016e7c30c31b257mridge         */
93544a317d2595b382be2fb5166016e7c30c31b257mridge        if ((!(st.st_mode & S_IFCHR)) ||
94544a317d2595b382be2fb5166016e7c30c31b257mridge             (st.st_rdev != devt)) {
95544a317d2595b382be2fb5166016e7c30c31b257mridge
96544a317d2595b382be2fb5166016e7c30c31b257mridge            /* Recreate the dev node. */
97544a317d2595b382be2fb5166016e7c30c31b257mridge            rc = unlink(DEVICE_NAME);
98544a317d2595b382be2fb5166016e7c30c31b257mridge            if (!rc) {
99544a317d2595b382be2fb5166016e7c30c31b257mridge                rc = mknod(DEVICE_NAME, (S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP), devt);
100544a317d2595b382be2fb5166016e7c30c31b257mridge            }
101544a317d2595b382be2fb5166016e7c30c31b257mridge        }
102544a317d2595b382be2fb5166016e7c30c31b257mridge    }
103544a317d2595b382be2fb5166016e7c30c31b257mridge
104544a317d2595b382be2fb5166016e7c30c31b257mridge    tdrm_fd = open(DEVICE_NAME, O_RDWR);
105544a317d2595b382be2fb5166016e7c30c31b257mridge
106544a317d2595b382be2fb5166016e7c30c31b257mridge    if (tdrm_fd < 0) {
107544a317d2595b382be2fb5166016e7c30c31b257mridge        printf("ERROR: Open of device %s failed %d errno = %d\n", DEVICE_NAME,tdrm_fd, errno);
108544a317d2595b382be2fb5166016e7c30c31b257mridge        return errno;
109544a317d2595b382be2fb5166016e7c30c31b257mridge    }
110544a317d2595b382be2fb5166016e7c30c31b257mridge    else {
111544a317d2595b382be2fb5166016e7c30c31b257mridge        printf("Device opened successfully \n");
1127d0a4a57fbcd47f72b67c08df532e8ef47f6fdaeGarrett Cooper      return 0;
113544a317d2595b382be2fb5166016e7c30c31b257mridge    }
114544a317d2595b382be2fb5166016e7c30c31b257mridge
115544a317d2595b382be2fb5166016e7c30c31b257mridge}
116544a317d2595b382be2fb5166016e7c30c31b257mridge
1174bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modakint
118544a317d2595b382be2fb5166016e7c30c31b257mridgetdrmclose() {
119544a317d2595b382be2fb5166016e7c30c31b257mridge
120544a317d2595b382be2fb5166016e7c30c31b257mridge	if (tdrm_fd != -1) {
121544a317d2595b382be2fb5166016e7c30c31b257mridge		close (tdrm_fd);
122544a317d2595b382be2fb5166016e7c30c31b257mridge		tdrm_fd = -1;
123544a317d2595b382be2fb5166016e7c30c31b257mridge	}
124544a317d2595b382be2fb5166016e7c30c31b257mridge}
125544a317d2595b382be2fb5166016e7c30c31b257mridge
126544a317d2595b382be2fb5166016e7c30c31b257mridgeint main() {
127544a317d2595b382be2fb5166016e7c30c31b257mridge	int rc;
128bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
129544a317d2595b382be2fb5166016e7c30c31b257mridge	/* open the module */
130544a317d2595b382be2fb5166016e7c30c31b257mridge	rc = tdrmopen();
131df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper        if (rc) {
132544a317d2595b382be2fb5166016e7c30c31b257mridge                printf("Test DRM Driver may not be loaded\n");
133544a317d2595b382be2fb5166016e7c30c31b257mridge                exit(1);
134544a317d2595b382be2fb5166016e7c30c31b257mridge        }
135bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
136544a317d2595b382be2fb5166016e7c30c31b257mridge	printf("\tBegin drm read system ioctl\n");
137544a317d2595b382be2fb5166016e7c30c31b257mridge	//
138544a317d2595b382be2fb5166016e7c30c31b257mridge	drm_auth_t auth;
139df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd ,DRM_IOCTL_GET_MAGIC , &auth ))
140544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(get_magic) test\n");
141544a317d2595b382be2fb5166016e7c30c31b257mridge	else
142544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(get_magic) test\n");
143544a317d2595b382be2fb5166016e7c30c31b257mridge
144544a317d2595b382be2fb5166016e7c30c31b257mridge	//
145544a317d2595b382be2fb5166016e7c30c31b257mridge	drm_stats_t stats;
146df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd , DRM_IOCTL_GET_STATS , &stats ))
147544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(get_status) test\n");
148544a317d2595b382be2fb5166016e7c30c31b257mridge	else
149544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(get_status) test\n");
150544a317d2595b382be2fb5166016e7c30c31b257mridge
151544a317d2595b382be2fb5166016e7c30c31b257mridge	/*--------------------------------------------------------------
152544a317d2595b382be2fb5166016e7c30c31b257mridge	 *                      for drm read write ioctl test
153544a317d2595b382be2fb5166016e7c30c31b257mridge	 */
154bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
155544a317d2595b382be2fb5166016e7c30c31b257mridge	printf("\tBegin read write ioctl test\n");
156df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd , DRM_IOCTL_IRQ_BUSID))
157544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(irq_busid)\n");
158544a317d2595b382be2fb5166016e7c30c31b257mridge	else
159544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(irq_busid)\n");
160df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd , DRM_IOCTL_GET_CLIENT))
161544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(get_client)\n");
162544a317d2595b382be2fb5166016e7c30c31b257mridge	else
163544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(get_client)\n");
164df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd , DRM_IOCTL_BLOCK))
165544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(block)\n");
166544a317d2595b382be2fb5166016e7c30c31b257mridge	else
167544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(block)\n");
168df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd , DRM_IOCTL_UNBLOCK))
169544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(unblock)\n");
170544a317d2595b382be2fb5166016e7c30c31b257mridge	else
171544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(unblock)\n");
172df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd , DRM_IOCTL_ADD_CTX))
173544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(addctx)\n");
174544a317d2595b382be2fb5166016e7c30c31b257mridge	else
175544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(addctx)\n");
176df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd , DRM_IOCTL_RM_CTX))
177544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(rmctx)\n");
178544a317d2595b382be2fb5166016e7c30c31b257mridge	else
179544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(rmctx)\n");
180df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd , DRM_IOCTL_GET_CTX))
181544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(getctx)\n");
182544a317d2595b382be2fb5166016e7c30c31b257mridge	else
183544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(getctx)\n");
184df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd , DRM_IOCTL_ADD_DRAW))
185544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(adddraw)\n");
186544a317d2595b382be2fb5166016e7c30c31b257mridge	else
187544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(adddraw)\n");
188df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd , DRM_IOCTL_RM_DRAW))
189544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm ioctl DRM(rmdraw)\n");
190544a317d2595b382be2fb5166016e7c30c31b257mridge	else
191544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm ioctl DRM(rmdraw)\n");
192bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
193544a317d2595b382be2fb5166016e7c30c31b257mridge	/* test drm stub_register */
194bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
195df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, TDRM_STUB_REGISTER))
196544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm stub_register test\n");
197544a317d2595b382be2fb5166016e7c30c31b257mridge	else
198544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm stub_register test\n");
199544a317d2595b382be2fb5166016e7c30c31b257mridge
2004bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak	// test drm DRM(agp_uninit)
201bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
202df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, TDRM_UNINIT_AGP))
203544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on DRM(agp_uninit) test\n");
204544a317d2595b382be2fb5166016e7c30c31b257mridge	else
205544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on DRM(agp_uninit) test\n");
206bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
2074bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak	// test drm DRM(agp_init)
208bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
209df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, TDRM_INIT_AGP))
210544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on DRM(agp_init) test\n");
211544a317d2595b382be2fb5166016e7c30c31b257mridge	else
212544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on DRM(agp_init) test\n");
213bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
2144bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak	// test drm stub_unregister
215bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
216df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, TDRM_STUB_UNREGISTER))
217544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm stub_unregister test\n");
218544a317d2595b382be2fb5166016e7c30c31b257mridge	else
219544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm stub_unregister test\n");
220bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak	// test drm add magic
221df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper		if (ioctl(tdrm_fd, TDRM_ADD_MAGIC))
222544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(add_magic) test\n");
223544a317d2595b382be2fb5166016e7c30c31b257mridge	else
224544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(add_magic) test\n");
225bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
226544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm remove magic
227df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, TDRM_REMOVE_MAGIC))
228544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(remove_magic) test\n");
229544a317d2595b382be2fb5166016e7c30c31b257mridge	else
230544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(remove_magic) test\n");
231544a317d2595b382be2fb5166016e7c30c31b257mridge
232544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm alloc pages
233df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, TDRM_ALLOC_PAGES))
234544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(alloc_pages) test\n");
235544a317d2595b382be2fb5166016e7c30c31b257mridge	else
236544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(alloc_pages) test\n");
237544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm free pages
238df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, TDRM_FREE_PAGES))
239544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(free_pages) test\n");
240544a317d2595b382be2fb5166016e7c30c31b257mridge	else
241544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(free_pages) test\n");
242544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm ctxbitmap_cleanup
243df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, TDRM_CTXBITMAP_UNINIT))
244544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(ctxbitmap_cleanup) test\n");
245544a317d2595b382be2fb5166016e7c30c31b257mridge	else
246544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(ctxbitmap_cleanup) test\n");
247bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
248544a317d2595b382be2fb5166016e7c30c31b257mridge	// test drm ctxbitmap init
249df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, TDRM_CTXBITMAP_INIT))
250544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(ctxbitmap_init) test\n");
251544a317d2595b382be2fb5166016e7c30c31b257mridge	else
252544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(ctxbitmap_init) test\n");
253bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
254bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak	static drm_version_t version;
255df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_VERSION,&version))
256544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(version) test\n");
257544a317d2595b382be2fb5166016e7c30c31b257mridge	else
258544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(version) test\n");
259544a317d2595b382be2fb5166016e7c30c31b257mridge
260544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_auth_t myauth;
261df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_GET_MAGIC,&myauth))
262544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(get_magic) test\n");
263544a317d2595b382be2fb5166016e7c30c31b257mridge	else
264544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(get_magic) test\n");
265544a317d2595b382be2fb5166016e7c30c31b257mridge
266df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_AUTH_MAGIC,&auth))
267544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm authmagic test\n");
268544a317d2595b382be2fb5166016e7c30c31b257mridge	else
269544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm authmagic test\n");
270bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
2714bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak	//  test for drm_agpsupport.h
272544a317d2595b382be2fb5166016e7c30c31b257mridge	/*
273df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_AGP_RELEASE))
274544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_release) test\n");
275544a317d2595b382be2fb5166016e7c30c31b257mridge	else
276544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_release) test\n");
277544a317d2595b382be2fb5166016e7c30c31b257mridge	*/
278df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_AGP_ACQUIRE))
279544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_acquire) test\n");
280544a317d2595b382be2fb5166016e7c30c31b257mridge	else
281544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_acquire) test\n");
282bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
283df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_AGP_RELEASE))
284544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_release) test\n");
285544a317d2595b382be2fb5166016e7c30c31b257mridge	else
286544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_release) test\n");
287bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
288df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_AGP_ACQUIRE))
289544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_acquire) test\n");
290544a317d2595b382be2fb5166016e7c30c31b257mridge	else
291544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_acquire) test\n");
292544a317d2595b382be2fb5166016e7c30c31b257mridge
293bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak	static drm_agp_info_t agp_info;
294df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_AGP_INFO,&agp_info))
295544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_info) test\n");
296544a317d2595b382be2fb5166016e7c30c31b257mridge	else
297544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_info) test\n");
298544a317d2595b382be2fb5166016e7c30c31b257mridge
299544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_agp_buffer_t agp_buffer;
300bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak	agp_buffer.size = 64;
301df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_AGP_ALLOC,&agp_buffer))
302544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_alloc) test\n");
303544a317d2595b382be2fb5166016e7c30c31b257mridge	else
304544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_alloc) test\n");
305bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
306544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_agp_binding_t bind_buffer;
307544a317d2595b382be2fb5166016e7c30c31b257mridge	bind_buffer.handle = agp_buffer.handle;
308544a317d2595b382be2fb5166016e7c30c31b257mridge	bind_buffer.offset = 64;
309bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
310df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_AGP_BIND,&bind_buffer))
311544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_bind) test\n");
312544a317d2595b382be2fb5166016e7c30c31b257mridge	else
313544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_bind) test\n");
314bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
315df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_AGP_UNBIND,&bind_buffer))
316544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_unbind) test\n");
317544a317d2595b382be2fb5166016e7c30c31b257mridge	else
318544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_unbind) test\n");
319df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_AGP_FREE,&agp_buffer))
320544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(agp_free) test\n");
321544a317d2595b382be2fb5166016e7c30c31b257mridge	else
322544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(agp_free) test\n");
323544a317d2595b382be2fb5166016e7c30c31b257mridge
3242c28215423293e443469a07ae7011135d058b671Garrett Cooper	// test drm_ctxbitmap.h
325544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_ctx_t getctx;
326df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_GET_CTX,&getctx))
327544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getctx) test\n");
328544a317d2595b382be2fb5166016e7c30c31b257mridge	else
329544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getctx) test\n");
330544a317d2595b382be2fb5166016e7c30c31b257mridge
331bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak	static drm_ctx_t ctx;
332df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_ADD_CTX,&ctx))
333544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(addctx) test\n");
334544a317d2595b382be2fb5166016e7c30c31b257mridge	else
335544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(addctx) test\n");
336bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
337df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_RM_CTX,&ctx))
338544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(rmctx) test\n");
339544a317d2595b382be2fb5166016e7c30c31b257mridge	else
340544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(rmctx) test\n");
341bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
342544a317d2595b382be2fb5166016e7c30c31b257mridge	/*
343544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_ctx_priv_map_t map;
344544a317d2595b382be2fb5166016e7c30c31b257mridge	memset(&map,0,sizeof(drm_ctx_priv_map_t));
345df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_GET_SAREA_CTX,&map))
346544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getsareactx) test\n");
347544a317d2595b382be2fb5166016e7c30c31b257mridge	else
348544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getsareactx) test\n");
349544a317d2595b382be2fb5166016e7c30c31b257mridge	*/
350544a317d2595b382be2fb5166016e7c30c31b257mridge	// for drm_drawtable.h
351544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_draw_t draw;
352df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_ADD_DRAW,&draw))
353544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(adddraw) test\n");
354544a317d2595b382be2fb5166016e7c30c31b257mridge	else
355544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(adddraw) test\n");
356bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
357df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_RM_DRAW,&draw))
358544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(rmdraw) test\n");
359544a317d2595b382be2fb5166016e7c30c31b257mridge	else
360544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(rmdraw) test\n");
361bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
362544a317d2595b382be2fb5166016e7c30c31b257mridge	//for drm_ioctl.h//
363544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_stats_t status;
364df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_GET_STATS,&status))
365544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getstatus) test\n");
366544a317d2595b382be2fb5166016e7c30c31b257mridge	else
367544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getstatus) test\n");
368bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
369544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_client_t client;
370df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_GET_CLIENT,&client))
371544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getclient) test\n");
372544a317d2595b382be2fb5166016e7c30c31b257mridge	else
373544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getclient) test\n");
374544a317d2595b382be2fb5166016e7c30c31b257mridge	/*
375544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_map_t getmap;
376544a317d2595b382be2fb5166016e7c30c31b257mridge	getmap.offset = 0;
377df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_GET_MAP,&getmap))
378544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getmap) test\n");
379544a317d2595b382be2fb5166016e7c30c31b257mridge	else
380544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getmap) test\n");
381544a317d2595b382be2fb5166016e7c30c31b257mridge	*/
382544a317d2595b382be2fb5166016e7c30c31b257mridge	static drm_unique_t unique;
383544a317d2595b382be2fb5166016e7c30c31b257mridge	unique.unique_len = 0;
384df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_GET_UNIQUE,&unique))
385544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(getunique) test\n");
386544a317d2595b382be2fb5166016e7c30c31b257mridge	else
387544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(getunique) test\n");
388544a317d2595b382be2fb5166016e7c30c31b257mridge	/*
389df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (ioctl(tdrm_fd, DRM_IOCTL_SET_UNIQUE,&unique))
390544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Failed on drm DRM(setunique) test\n");
391bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
392544a317d2595b382be2fb5166016e7c30c31b257mridge	else
393544a317d2595b382be2fb5166016e7c30c31b257mridge		printf("Success on drm DRM(setunique) test\n");
394bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
395544a317d2595b382be2fb5166016e7c30c31b257mridge	*/
396544a317d2595b382be2fb5166016e7c30c31b257mridge	rc = tdrmclose();
397df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (rc) {
398544a317d2595b382be2fb5166016e7c30c31b257mridge                printf("Test MOD Driver may not be closed\n");
399544a317d2595b382be2fb5166016e7c30c31b257mridge                exit(1);
400544a317d2595b382be2fb5166016e7c30c31b257mridge        }
401bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
402ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman}
403