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