aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJens Owen2002-04-09 16:54:56 -0500
committerJens Owen2002-04-09 16:54:56 -0500
commit3903e5ac94c07cf31f0bc24eff5011ef8cc7afba (patch)
tree93515f920b8f69e9502a0a74396f10bfdd0c5a58 /libdrm/xf86drm.c
parenta820c741374743065540546c92b1d5e1a2089225 (diff)
downloadlibdrm-3903e5ac94c07cf31f0bc24eff5011ef8cc7afba.tar.gz
libdrm-3903e5ac94c07cf31f0bc24eff5011ef8cc7afba.tar.xz
libdrm-3903e5ac94c07cf31f0bc24eff5011ef8cc7afba.zip
Merged drmcommand-0-0-1
Diffstat (limited to 'libdrm/xf86drm.c')
-rw-r--r--libdrm/xf86drm.c74
1 files changed, 73 insertions, 1 deletions
diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
index 1d26b6e6..9cc83a27 100644
--- a/libdrm/xf86drm.c
+++ b/libdrm/xf86drm.c
@@ -434,7 +434,7 @@ static void drmCopyVersion(drmVersionPtr d, const drm_version_t *s)
434 d->desc = drmStrdup(s->desc); 434 d->desc = drmStrdup(s->desc);
435} 435}
436 436
437/* drmVersion obtains the version information via an ioctl. Similar 437/* drmGet Version obtains the driver version information via an ioctl. Similar
438 * information is available via /proc/dri. */ 438 * information is available via /proc/dri. */
439 439
440drmVersionPtr drmGetVersion(int fd) 440drmVersionPtr drmGetVersion(int fd)
@@ -483,6 +483,26 @@ drmVersionPtr drmGetVersion(int fd)
483 return retval; 483 return retval;
484} 484}
485 485
486/* drmGetLibVersion set version information for the drm user space library.
487 * this version number is driver indepedent */
488
489drmVersionPtr drmGetLibVersion(int fd)
490{
491 drm_version_t *version = drmMalloc(sizeof(*version));
492
493 /* Version history:
494 * revision 1.0.x = original DRM interface with no drmGetLibVersion
495 * entry point and many drm<Device> extensions
496 * revision 1.1.x = added drmCommand entry points for device extensions
497 * added drmGetLibVersion to identify libdrm.a version
498 */
499 version->version_major = 1;
500 version->version_minor = 1;
501 version->version_patchlevel = 0;
502
503 return (drmVersionPtr)version;
504}
505
486void drmFreeBusid(const char *busid) 506void drmFreeBusid(const char *busid)
487{ 507{
488 drmFree((void *)busid); 508 drmFree((void *)busid);
@@ -1343,6 +1363,58 @@ int drmGetStats(int fd, drmStatsT *stats)
1343 return 0; 1363 return 0;
1344} 1364}
1345 1365
1366int drmCommandNone(int fd, unsigned long drmCommandIndex)
1367{
1368 void *data = NULL; /* dummy */
1369 unsigned long request;
1370
1371 request = DRM_IO( DRM_COMMAND_BASE + drmCommandIndex);
1372
1373 if (ioctl(fd, request, data)) {
1374 return -errno;
1375 }
1376 return 0;
1377}
1378
1379int drmCommandRead(int fd, unsigned long drmCommandIndex,
1380 void *data, unsigned long size )
1381{
1382 unsigned long request;
1383
1384 request = DRM_IOR( DRM_COMMAND_BASE + drmCommandIndex, size);
1385
1386 if (ioctl(fd, request, data)) {
1387 return -errno;
1388 }
1389 return 0;
1390}
1391
1392int drmCommandWrite(int fd, unsigned long drmCommandIndex,
1393 void *data, unsigned long size )
1394{
1395 unsigned long request;
1396
1397 request = DRM_IOW( DRM_COMMAND_BASE + drmCommandIndex, size);
1398
1399 if (ioctl(fd, request, data)) {
1400 return -errno;
1401 }
1402 return 0;
1403}
1404
1405int drmCommandWriteRead(int fd, unsigned long drmCommandIndex,
1406 void *data, unsigned long size )
1407{
1408 unsigned long request;
1409
1410 request = DRM_IOWR( DRM_COMMAND_BASE + drmCommandIndex, size);
1411
1412 if (ioctl(fd, request, data)) {
1413 return -errno;
1414 }
1415 return 0;
1416}
1417
1346#if defined(XFree86Server) || defined(DRM_USE_MALLOC) 1418#if defined(XFree86Server) || defined(DRM_USE_MALLOC)
1347static void drmSIGIOHandler(int interrupt, void *closure) 1419static void drmSIGIOHandler(int interrupt, void *closure)
1348{ 1420{