7 char *pciBusID
= "PCI:1:0:0";
8 #define DRM_PAGE_SIZE 4096
12 static int client( void )
15 drmContext clientContext
;
17 fprintf(stderr
, "Opening client drm\n");
19 fd
= drmOpen(NULL
,pciBusID
);
21 fprintf(stderr
, "failed to open DRM: %s\n", strerror(-fd
));
26 fprintf(stderr
, "Create server context\n");
27 if ((err
= drmCreateContext(fd
, &clientContext
)) != 0) {
28 fprintf(stderr
, "%s: drmCreateContext failed %d\n", __FUNCTION__
, err
);
33 fprintf(stderr
, "DRM_LOCK( %d %p %d )\n", fd
, pSAREA
, clientContext
);
34 DRM_LOCK(fd
, pSAREA
, clientContext
, 0);
35 fprintf(stderr
, "locked\n");
36 DRM_UNLOCK(fd
, pSAREA
, clientContext
);
37 fprintf(stderr
, "DRM_UNLOCK finished\n");
40 fprintf(stderr
, "Closing client drm: %d\n", fd
);
42 fprintf(stderr
, "done %d\n", ret
);
47 int main( int argc
, char *argv
[] )
49 char *drmModuleName
= "radeon";
54 drmContext serverContext
;
56 /* Note that drmOpen will try to load the kernel module, if needed. */
57 drmFD
= drmOpen(drmModuleName
, NULL
);
59 /* failed to open DRM */
60 fprintf(stderr
, "[drm] drmOpen failed\n");
65 if ((err
= drmSetBusid(drmFD
, pciBusID
)) < 0) {
67 fprintf(stderr
, "[drm] drmSetBusid failed (%d, %s), %s\n",
68 drmFD
, pciBusID
, strerror(-err
));
73 SAREASize
= DRM_PAGE_SIZE
;
83 fprintf(stderr
, "[drm] drmAddMap failed\n");
87 fprintf(stderr
, "[drm] added %d byte SAREA at 0x%08lx\n",
93 (drmAddressPtr
)(&pSAREA
)) < 0)
96 fprintf(stderr
, "[drm] drmMap failed\n");
100 memset(pSAREA
, 0, SAREASize
);
101 fprintf(stderr
, "[drm] mapped SAREA 0x%08lx to %p, size %d\n",
102 hSAREA
, pSAREA
, SAREASize
);
104 fprintf(stderr
, "Create server context\n");
105 if ((err
= drmCreateContext(drmFD
, &serverContext
)) != 0) {
106 fprintf(stderr
, "%s: drmCreateContext failed %d\n", __FUNCTION__
, err
);
111 fprintf(stderr
, "DRM_LOCK( %d %p %d )\n", drmFD
, pSAREA
, serverContext
);
112 DRM_LOCK(drmFD
, pSAREA
, serverContext
, 0);
113 fprintf(stderr
, "locked\n");
114 DRM_UNLOCK(drmFD
, pSAREA
, serverContext
);
115 fprintf(stderr
, "DRM_UNLOCK finished\n");
121 fprintf(stderr
, "DRM_LOCK( %d %p %d )\n", drmFD
, pSAREA
, serverContext
);
122 DRM_LOCK(drmFD
, pSAREA
, serverContext
, 0);
123 fprintf(stderr
, "locked\n");
124 DRM_UNLOCK(drmFD
, pSAREA
, serverContext
);
125 fprintf(stderr
, "DRM_UNLOCK finished\n");
128 drmUnmap(pSAREA
, SAREASize
);
129 fprintf(stderr
, "[drm] unmapped SAREA 0x%08lx from %p, size %d\n",
130 hSAREA
, pSAREA
, SAREASize
);
133 fprintf(stderr
, "%s: Closing DRM fd\n", __FUNCTION__
);
134 (void)drmClose(drmFD
);