5 #include <mono/io-layer/io-layer.h>
7 /* We're digging into handle internals here... */
8 #include <mono/io-layer/handles-private.h>
9 #include <mono/io-layer/wapi-private.h>
11 #define HDRSIZE sizeof(struct _WapiScratchHeader)
13 static guchar *printable (guchar *data, guint32 datalen)
15 static guchar buf[32];
22 for(i=0; i<datalen; i++) {
23 if(g_ascii_isprint (data[i])) {
34 int main (int argc, char **argv)
37 struct _WapiScratchHeader *hdr;
40 _wapi_shared_data=g_new0 (struct _WapiHandleShared_list *, 1);
41 _wapi_shared_scratch=g_new0 (struct _WapiHandleScratch, 1);
43 success=_wapi_shm_attach (&_wapi_shared_data[0], &_wapi_shared_scratch);
45 g_error ("Failed to attach shared memory!");
49 hdr=(struct _WapiScratchHeader *)&_wapi_shared_scratch->scratch_data;
50 if(hdr->flags==0 && hdr->length==0) {
51 g_print ("Scratch space unused\n");
55 while(idx < _wapi_shared_scratch->data_len) {
56 hdr=(struct _WapiScratchHeader *)&_wapi_shared_scratch->scratch_data[idx];
57 if(hdr->flags & WAPI_SHM_SCRATCH_FREE) {
58 g_print ("Free block at %6d (index %6d), length %6d\n",
59 idx, idx+HDRSIZE, hdr->length);
61 guchar *data=&_wapi_shared_scratch->scratch_data[idx+HDRSIZE];
63 g_print ("Used block at %6d (index %6d), length %6d, [%s]\n",
64 idx, idx+HDRSIZE, hdr->length,
65 printable (data, hdr->length));
68 idx+=(hdr->length+HDRSIZE);