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