1 /**************************************************************************
5 Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
7 Contact: Boram Park <boram1288.park@samsung.com>
8 Sangjin LEE <lsj119@samsung.com>
10 Permission is hereby granted, free of charge, to any person obtaining a
11 copy of this software and associated documentation files (the
12 "Software"), to deal in the Software without restriction, including
13 without limitation the rights to use, copy, modify, merge, publish,
14 distribute, sub license, and/or sell copies of the Software, and to
15 permit persons to whom the Software is furnished to do so, subject to
16 the following conditions:
18 The above copyright notice and this permission notice (including the
19 next paragraph) shall be included in all copies or substantial portions
22 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
25 IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
26 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
27 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
28 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 **************************************************************************/
39 #include <sys/types.h>
40 #include <sys/fcntl.h>
51 #include <X11/Xatom.h>
53 #include <windowstr.h>
55 #include <X11/extensions/XShm.h>
56 #include <X11/extensions/dpms.h>
57 #include <X11/extensions/sync.h>
58 #include <X11/extensions/xtestext1.h>
59 #include <X11/extensions/XTest.h>
60 #include <X11/Xlibint.h>
62 #include <X11/extensions/dpmsproto.h>
63 #include <X11/extensions/shmproto.h>
64 #include <X11/extensions/syncproto.h>
65 #include <X11/extensions/xtestext1proto.h>
66 #include <X11/extensions/xtestproto.h>
68 #include "xdbg_types.h"
69 #include "xdbg_evlog_xext.h"
70 #include "xdbg_evlog.h"
73 _EvlogRequestXextDpms(EvlogInfo *evinfo, int detail_level, char *reply, int *len)
75 xReq *req = evinfo->req.ptr;
79 case X_DPMSSetTimeouts:
81 xDPMSSetTimeoutsReq *stuff = (xDPMSSetTimeoutsReq *)req;
82 REPLY (": Standby(%d) Suspend(%d) off(%d)",
90 case X_DPMSForceLevel:
92 xDPMSForceLevelReq *stuff = (xDPMSForceLevelReq *)req;
108 _EvlogRequestXextShm (EvlogInfo *evinfo, int detail_level, char *reply, int *len)
110 xReq *req = evinfo->req.ptr;
116 xShmPutImageReq *stuff = (xShmPutImageReq *)req;
117 REPLY (": XID(0x%lx) gc(0x%lx) size(%dx%d) src(%d,%d %dx%d) dst(%d,%d)",
129 if (detail_level >= EVLOG_PRINT_DETAIL)
134 switch (stuff->format)
136 case XYBitmap: format = "XYBitmap"; break;
137 case XYPixmap: format = "XYPixmap"; break;
138 case ZPixmap: format = "ZPixmap"; break;
139 default: format = dformat; sprintf (dformat, "%d", stuff->format); break;
143 REPLY ("%67s depth(%d) format(%s) send_event(%s) shmseg(0x%lx) offset(%ld)",
147 stuff->sendEvent ? "YES" : "NO",
157 xShmGetImageReq *stuff = (xShmGetImageReq *)req;
158 REPLY (": XID(0x%lx) size(%dx%d) coord(%d,%d)",
165 if (detail_level >= EVLOG_PRINT_DETAIL)
170 switch (stuff->format)
172 case XYBitmap: format = "XYBitmap"; break;
173 case XYPixmap: format = "XYPixmap"; break;
174 case ZPixmap: format = "ZPixmap"; break;
175 default: format = dformat; sprintf (dformat, "%d", stuff->format); break;
179 REPLY ("%67s format(%s) plain_mask(0x%lx) shmseg(0x%lx) offset(%ld)",
190 case X_ShmCreatePixmap:
192 xShmCreatePixmapReq *stuff = (xShmCreatePixmapReq *)req;
193 REPLY (": Pixmap(0x%lx) Drawable(0x%lx) size(%dx%d)",
199 if (detail_level >= EVLOG_PRINT_DETAIL)
202 REPLY ("%67s depth(%d) shmseg(0x%lx) offset(%ld)",
220 _EvlogRequestXextSync(EvlogInfo *evinfo, int detail_level, char *reply, int *len)
222 xReq *req = evinfo->req.ptr;
226 case X_SyncCreateCounter:
228 xSyncCreateCounterReq *stuff = (xSyncCreateCounterReq *)req;
229 REPLY (": XID(0x%lx) initValue(%ld/%ld)",
231 stuff->initial_value_hi,
232 stuff->initial_value_lo);
237 case X_SyncSetCounter:
239 xSyncSetCounterReq *stuff = (xSyncSetCounterReq *)req;
240 REPLY (": XID(0x%lx) Value(%ld/%ld)",
248 case X_SyncChangeCounter:
250 xSyncChangeCounterReq *stuff = (xSyncChangeCounterReq *)req;
251 REPLY (": XID(0x%lx) Value(%ld/%ld)",
259 case X_SyncQueryCounter:
261 xSyncQueryCounterReq *stuff = (xSyncQueryCounterReq *)req;
262 REPLY (": XID(0x%lx)",
268 case X_SyncDestroyCounter:
270 xSyncDestroyCounterReq *stuff = (xSyncDestroyCounterReq *)req;
271 REPLY (": XID(0x%lx)",
285 _EvlogRequestXextXtestExt1(EvlogInfo *evinfo, int detail_level, char *reply, int *len)
287 xReq *req = evinfo->req.ptr;
291 case X_TestFakeInput:
293 xTestFakeInputReq *stuff = (xTestFakeInputReq *)req;
294 REPLY (": XID(0x%lx)",
302 xTestGetInputReq *stuff = (xTestGetInputReq *)req;
303 REPLY (": XID(0x%lx)",
318 _EvlogRequestXextXtest(EvlogInfo *evinfo, int detail_level, char *reply, int *len)
320 xReq *req = evinfo->req.ptr;
324 case X_XTestGetVersion:
326 xXTestGetVersionReq *stuff = (xXTestGetVersionReq *)req;
327 REPLY (": MajorVersion(%d) MinorVersion(%d)",
329 stuff->minorVersion);
334 case X_XTestCompareCursor:
336 xXTestCompareCursorReq *stuff = (xXTestCompareCursorReq *)req;
337 REPLY (": XID(0x%lx) Cursor(0x%lx)",
344 case X_XTestFakeInput:
346 xXTestFakeInputReq *stuff = (xXTestFakeInputReq *)req;
347 REPLY (": XID(0x%lx) coord(%d,%d)",
352 if (detail_level >= EVLOG_PRINT_DETAIL)
354 REPLY (" type(%d) detail(%d) time(%lums) device_id(%d)",
369 _EvlogRequestXextShape(EvlogInfo *evinfo, int detail_level, char *reply, int *len)
371 xReq *req = evinfo->req.ptr;
375 case X_ShapeRectangles:
377 xShapeRectanglesReq *stuff = (xShapeRectanglesReq *)req;
378 REPLY (": XID(0x%lx) coord(%d,%d)",
383 if (detail_level >= EVLOG_PRINT_DETAIL)
388 const char *destKind, *ordering;
389 char ddestKind[10], dordering[10];
391 switch (stuff->destKind)
393 case ShapeBounding: destKind = "ShapeBounding"; break;
394 case ShapeClip: destKind = "ShapeClip"; break;
395 case ShapeInput: destKind = "ShapeInput"; break;
396 default: destKind = ddestKind; sprintf (ddestKind, "%d", stuff->destKind); break;
399 switch (stuff->ordering)
401 case Unsorted: ordering = "Unsorted"; break;
402 case YSorted: ordering = "YSorted"; break;
403 case YXSorted: ordering = "YXSorted"; break;
404 case YXBanded: ordering = "YXBanded"; break;
405 default: ordering = dordering; sprintf (dordering, "%d", stuff->ordering); break;
408 nrect = ((stuff->length * 4) - sizeof(xShapeRectanglesReq)) / sizeof(xRectangle);
409 prect = (xRectangle *) &stuff[1];
411 REPLY (" op(%d) destKind(%s) ordering(%s) nrect(%d)",
418 REPLY ("%67s Region", " ");
421 for (i = 0 ; i < nrect ; i++)
423 REPLY("[%d,%d %dx%d]",
441 xShapeMaskReq *stuff = (xShapeMaskReq *)req;
442 REPLY (": XID(0x%lx) coord(%d,%d) src(0x%lx)",
448 if (detail_level >= EVLOG_PRINT_DETAIL)
450 const char *destKind;
453 switch (stuff->destKind)
455 case ShapeBounding: destKind = "ShapeBounding"; break;
456 case ShapeClip: destKind = "ShapeClip"; break;
457 case ShapeInput: destKind = "ShapeInput"; break;
458 default: destKind = ddestKind; sprintf (ddestKind, "%d", stuff->destKind); break;
461 REPLY (" op(%d) destKind(%s)",
471 xShapeCombineReq *stuff = (xShapeCombineReq *)req;
472 REPLY (": XID(0x%lx) coord(%d,%d) src(0x%lx)",
478 if (detail_level >= EVLOG_PRINT_DETAIL)
480 const char *destKind, *srcKind;
481 char ddestKind[10], dsrcKind[10];
483 switch (stuff->destKind)
485 case ShapeBounding: destKind = "ShapeBounding"; break;
486 case ShapeClip: destKind = "ShapeClip"; break;
487 case ShapeInput: destKind = "ShapeInput"; break;
488 default: destKind = ddestKind; sprintf (ddestKind, "%d", stuff->destKind); break;
491 switch (stuff->srcKind)
493 case ShapeBounding: srcKind = "ShapeBounding"; break;
494 case ShapeClip: srcKind = "ShapeClip"; break;
495 case ShapeInput: srcKind = "ShapeInput"; break;
496 default: srcKind = dsrcKind; sprintf (dsrcKind, "%d", stuff->srcKind); break;
499 REPLY (" op(%d) destKind(%s) srcKind(%s)",
510 xShapeOffsetReq *stuff = (xShapeOffsetReq *)req;
511 REPLY (": XID(0x%lx) coord(%d,%d)",
516 if (detail_level >= EVLOG_PRINT_DETAIL)
518 const char *destKind;
521 switch (stuff->destKind)
523 case ShapeBounding: destKind = "ShapeBounding"; break;
524 case ShapeClip: destKind = "ShapeClip"; break;
525 case ShapeInput: destKind = "ShapeInput"; break;
526 default: destKind = ddestKind; sprintf (ddestKind, "%d", stuff->destKind); break;
529 REPLY (" destKind(%s)",
536 case X_ShapeQueryExtents:
538 xShapeQueryExtentsReq *stuff = (xShapeQueryExtentsReq *)req;
539 REPLY (": XID(0x%lx)",
545 case X_ShapeSelectInput:
547 xShapeSelectInputReq *stuff = (xShapeSelectInputReq *)req;
548 REPLY (": XID(0x%lx)",
551 if (detail_level >= EVLOG_PRINT_DETAIL)
553 REPLY (" enable(%s)",
554 stuff->enable ? "YES" : "NO");
560 case X_ShapeInputSelected:
562 xShapeInputSelectedReq *stuff = (xShapeInputSelectedReq *)req;
563 REPLY (": XID(0x%lx)",
569 case X_ShapeGetRectangles:
571 xShapeGetRectanglesReq *stuff = (xShapeGetRectanglesReq *)req;
572 REPLY (": XID(0x%lx)",
575 if (detail_level >= EVLOG_PRINT_DETAIL)
582 case ShapeBounding: kind = "ShapeBounding"; break;
583 case ShapeClip: kind = "ShapeClip"; break;
584 case ShapeInput: kind = "ShapeInput"; break;
585 default: kind = dkind; sprintf (dkind, "%d", stuff->kind); break;
603 _EvlogEventXextDpms (EvlogInfo *evinfo, int first_base, int detail_level, char *reply, int *len)
606 xEvent *evt = evinfo->evt.ptr;
608 switch ((evt->u.u.type & 0x7F) - first_base)
620 _EvlogEventXextShm (EvlogInfo *evinfo, int first_base, int detail_level, char *reply, int *len)
622 xEvent *evt = evinfo->evt.ptr;
624 switch ((evt->u.u.type & 0x7F) - first_base)
628 xShmCompletionEvent *stuff = (xShmCompletionEvent *) evt;
629 REPLY (": XID(0x%lx)",
632 if (detail_level >= EVLOG_PRINT_DETAIL)
634 REPLY (" sequence_num(%d) major_event(%d) minor_event(%d) shmseg(0x%lx) offset(%ld)",
635 stuff->sequenceNumber,
653 _EvlogEventXextSync (EvlogInfo *evinfo, int first_base, int detail_level, char *reply, int *len)
655 xEvent *evt = evinfo->evt.ptr;
657 switch ((evt->u.u.type & 0x7F) - first_base)
659 case XSyncCounterNotify:
661 xSyncCounterNotifyEvent *stuff = (xSyncCounterNotifyEvent *) evt;
662 REPLY (": XID(0x%lx) WaitValue(0x%lx/0x%lx) CounterValue(0x%lx/0x%lx)",
664 stuff->wait_value_hi,
665 stuff->wait_value_lo,
666 stuff->counter_value_hi,
667 stuff->counter_value_lo);
669 if (detail_level >= EVLOG_PRINT_DETAIL)
672 REPLY ("%67s sequence_num(%d) time(%lums) count(%d) destroyed(%s)",
674 stuff->sequenceNumber,
677 stuff->destroyed ? "YES" : "NO");
683 case XSyncAlarmNotify:
685 xSyncAlarmNotifyEvent *stuff = (xSyncAlarmNotifyEvent *) evt;
686 REPLY (": XID(0x%lx) CounterValue(0x%lx/0x%lx) AlarmValue(0x%lx/0x%lx)",
688 stuff->counter_value_hi,
689 stuff->counter_value_lo,
690 stuff->alarm_value_hi,
691 stuff->alarm_value_lo);
693 if (detail_level >= EVLOG_PRINT_DETAIL)
696 REPLY ("%67s sequence_num(%d) time(%lums) state(%d)",
698 stuff->sequenceNumber,
715 _EvlogEventXextXtestExt1 (EvlogInfo *evinfo, int first_base, int detail_level, char *reply, int *len)
717 xEvent *evt = evinfo->evt.ptr;
719 switch ((evt->u.u.type & 0x7F) - first_base)
730 _EvlogEventXextXtest (EvlogInfo *evinfo, int first_base, int detail_level, char *reply, int *len)
732 xEvent *evt = evinfo->evt.ptr;
734 switch ((evt->u.u.type & 0x7F) - first_base)
745 _EvlogEventXextShape (EvlogInfo *evinfo, int first_base, int detail_level, char *reply, int *len)
747 xEvent *evt = evinfo->evt.ptr;
749 switch ((evt->u.u.type & 0x7F) - first_base)
753 xShapeNotifyEvent *stuff = (xShapeNotifyEvent *) evt;
754 REPLY (": XID(0x%lx) coord(%d,%d %dx%d)",
761 if (detail_level >= EVLOG_PRINT_DETAIL)
768 case ShapeBounding: kind = "ShapeBounding"; break;
769 case ShapeClip: kind = "ShapeClip"; break;
770 case ShapeInput: kind = "ShapeInput"; break;
771 default: kind = dkind; sprintf (dkind, "%d", stuff->kind); break;
776 REPLY ("%67s kind(%s) sequence_num(%d) time(%lums) shaped(%s)",
779 stuff->sequenceNumber,
781 stuff->shaped ? "EXIST" : "NON_EXIST");
795 _EvlogReplyXextDpms (EvlogInfo *evinfo, int detail_level, char *reply, int *len)
797 xGenericReply *rep = evinfo->rep.ptr;
799 switch (evinfo->rep.reqData)
801 case X_DPMSSetTimeouts:
803 if (evinfo->rep.isStart)
805 xDPMSGetTimeoutsReply *stuff = (xDPMSGetTimeoutsReply *)rep;
806 REPLY (": Standby(%usec) Suspend(%usec) off(%usec) sequence_num(%d)",
810 stuff->sequenceNumber);
828 _EvlogReplyXextShm (EvlogInfo *evinfo, int detail_level, char *reply, int *len)
830 xGenericReply *rep = evinfo->rep.ptr;
832 switch (evinfo->rep.reqData)
836 if (evinfo->rep.isStart)
838 xShmGetImageReply *stuff = (xShmGetImageReply *)rep;
839 REPLY (": Visual(0x%lx) size(%ld) sequence_num(%d)",
842 stuff->sequenceNumber);
860 _EvlogReplyXextSync (EvlogInfo *evinfo, int detail_level, char *reply, int *len)
862 xGenericReply *rep = evinfo->rep.ptr;
864 switch (evinfo->rep.reqData)
866 case X_SyncQueryCounter:
868 if (evinfo->rep.isStart)
870 xSyncQueryCounterReply *stuff = (xSyncQueryCounterReply *)rep;
871 REPLY (": Value(0x%lx/0x%lx) sequence_num(%d)",
874 stuff->sequenceNumber);
892 _EvlogReplyXextXtestExt1 (EvlogInfo *evinfo, int detail_level, char *reply, int *len)
894 xGenericReply *rep = evinfo->rep.ptr;
896 switch (evinfo->rep.reqData)
898 case X_TestQueryInputSize:
900 if (evinfo->rep.isStart)
902 xTestQueryInputSizeReply *stuff = (xTestQueryInputSizeReply *)rep;
903 REPLY (": sizeReturn(0x%lx) sequence_num(%d)",
905 stuff->sequenceNumber);
923 _EvlogReplyXextXtest (EvlogInfo *evinfo, int detail_level, char *reply, int *len)
925 xGenericReply *rep = evinfo->rep.ptr;
927 switch (evinfo->rep.reqData)
929 case X_XTestGetVersion:
931 if (evinfo->rep.isStart)
933 xXTestGetVersionReply *stuff = (xXTestGetVersionReply *)rep;
934 REPLY (": MinorVersion(%d) sequence_num(%d)",
936 stuff->sequenceNumber);
954 _EvlogReplyXextShape(EvlogInfo *evinfo, int detail_level, char *reply, int *len)
956 xGenericReply *rep = evinfo->rep.ptr;
958 switch (evinfo->rep.reqData)
960 case X_ShapeQueryVersion:
962 if (evinfo->rep.isStart)
964 xShapeQueryVersionReply *stuff = (xShapeQueryVersionReply *)rep;
965 REPLY (": MajorVersion(%d) MinorVersion(%d)",
967 stuff->minorVersion);
977 case X_ShapeQueryExtents:
979 if (evinfo->rep.isStart)
981 xShapeQueryExtentsReply *stuff = (xShapeQueryExtentsReply *)rep;
983 REPLY (": bounding_shaped(%s)",
984 stuff->boundingShaped ? "YES" : "NO");
986 if (stuff->boundingShaped)
987 REPLY (" bounding(%d,%d %dx%d)",
990 stuff->widthClipShape,
991 stuff->heightClipShape);
993 REPLY (" bounding(None)");
996 REPLY (" clip_shaped(%s)",
997 stuff->clipShaped ? "YES" : "NO");
999 if (stuff->boundingShaped)
1000 REPLY (" clip(%d,%d %dx%d)",
1001 stuff->xBoundingShape,
1002 stuff->yBoundingShape,
1003 stuff->widthBoundingShape,
1004 stuff->heightBoundingShape);
1006 REPLY (" clip(None)");
1017 case X_ShapeInputSelected:
1019 if (evinfo->rep.isStart)
1021 xShapeInputSelectedReply *stuff = (xShapeInputSelectedReply *)rep;
1023 REPLY (" enable(%s)",
1024 stuff->enabled ? "YES" : "NO");
1034 case X_ShapeGetRectangles:
1036 if (evinfo->rep.isStart)
1038 xShapeGetRectanglesReply *stuff = (xShapeGetRectanglesReply *)rep;
1040 const char *ordering;
1043 switch (stuff->ordering)
1045 case Unsorted: ordering = "Unsorted"; break;
1046 case YSorted: ordering = "YSorted"; break;
1047 case YXSorted: ordering = "YXSorted"; break;
1048 case YXBanded: ordering = "YXBanded"; break;
1049 default: ordering = dordering; sprintf (dordering, "%d", stuff->ordering); break;
1051 REPLY (": ordering(%s) nrects(%ld)",
1057 xRectangle *stuff = (xRectangle *)rep;
1062 for (i = 0 ; i < evinfo->rep.size / sizeof(xRectangle) ; i ++)
1064 REPLY ("[%d,%d %dx%d]",
1070 if(i != evinfo->rep.size / sizeof(xRectangle) - 1)
1089 xDbgEvlogXextDpmsGetBase (ExtensionInfo *extinfo)
1092 RETURN_IF_FAIL (extinfo != NULL);
1094 extinfo->req_func = _EvlogRequestXextDpms;
1095 extinfo->evt_func = _EvlogEventXextDpms;
1096 extinfo->rep_func = _EvlogReplyXextDpms;
1098 ExtensionEntry *xext = CheckExtension (DPMSExtensionName);
1099 RETURN_IF_FAIL (xext != NULL);
1100 RETURN_IF_FAIL (extinfo != NULL);
1102 extinfo->opcode = xext->base;
1103 extinfo->evt_base = xext->eventBase;
1104 extinfo->err_base = xext->errorBase;
1105 extinfo->req_func = _EvlogRequestXextDpms;
1106 extinfo->evt_func = _EvlogEventXextDpms;
1107 extinfo->rep_func = _EvlogReplyXextDpms;
1113 xDbgEvlogXextShmGetBase (ExtensionInfo *extinfo)
1116 RETURN_IF_FAIL (extinfo != NULL);
1118 extinfo->req_func = _EvlogRequestXextShm;
1119 extinfo->evt_func = _EvlogEventXextShm;
1120 extinfo->rep_func = _EvlogReplyXextShm;
1122 ExtensionEntry *xext = CheckExtension (SHMNAME);
1123 RETURN_IF_FAIL (xext != NULL);
1124 RETURN_IF_FAIL (extinfo != NULL);
1126 extinfo->opcode = xext->base;
1127 extinfo->evt_base = xext->eventBase;
1128 extinfo->err_base = xext->errorBase;
1129 extinfo->req_func = _EvlogRequestXextShm;
1130 extinfo->evt_func = _EvlogEventXextShm;
1131 extinfo->rep_func = _EvlogReplyXextShm;
1137 xDbgEvlogXextSyncGetBase (ExtensionInfo *extinfo)
1140 RETURN_IF_FAIL (extinfo != NULL);
1142 extinfo->req_func = _EvlogRequestXextSync;
1143 extinfo->evt_func = _EvlogEventXextSync;
1144 extinfo->rep_func = _EvlogReplyXextSync;
1146 ExtensionEntry *xext = CheckExtension (SYNC_NAME);
1147 RETURN_IF_FAIL (xext != NULL);
1148 RETURN_IF_FAIL (extinfo != NULL);
1150 extinfo->opcode = xext->base;
1151 extinfo->evt_base = xext->eventBase;
1152 extinfo->err_base = xext->errorBase;
1153 extinfo->req_func = _EvlogRequestXextSync;
1154 extinfo->evt_func = _EvlogEventXextSync;
1155 extinfo->rep_func = _EvlogReplyXextSync;
1162 xDbgEvlogXextXtestExt1GetBase (ExtensionInfo *extinfo)
1165 RETURN_IF_FAIL (extinfo != NULL);
1167 extinfo->req_func = _EvlogRequestXextXtestExt1;
1168 extinfo->evt_func = _EvlogEventXextXtestExt1;
1169 extinfo->rep_func = _EvlogReplyXextXtestExt1;
1171 ExtensionEntry *xext = CheckExtension (XTestEXTENSION_NAME);
1172 RETURN_IF_FAIL (xext != NULL);
1173 RETURN_IF_FAIL (extinfo != NULL);
1175 extinfo->opcode = xext->base;
1176 extinfo->evt_base = xext->eventBase;
1177 extinfo->err_base = xext->errorBase;
1178 extinfo->req_func = _EvlogRequestXextXtestExt1;
1179 extinfo->evt_func = _EvlogEventXextXtestExt1;
1180 extinfo->rep_func = _EvlogReplyXextXtestExt1;
1187 xDbgEvlogXextXtestGetBase (ExtensionInfo *extinfo)
1190 RETURN_IF_FAIL (extinfo != NULL);
1192 extinfo->req_func = _EvlogRequestXextXtest;
1193 extinfo->evt_func = _EvlogEventXextXtest;
1194 extinfo->rep_func = _EvlogReplyXextXtest;
1196 ExtensionEntry *xext = CheckExtension (XTestExtensionName);
1197 RETURN_IF_FAIL (xext != NULL);
1198 RETURN_IF_FAIL (extinfo != NULL);
1200 extinfo->opcode = xext->base;
1201 extinfo->evt_base = xext->eventBase;
1202 extinfo->err_base = xext->errorBase;
1203 extinfo->req_func = _EvlogRequestXextXtest;
1204 extinfo->evt_func = _EvlogEventXextXtest;
1205 extinfo->rep_func = _EvlogReplyXextXtest;
1210 xDbgEvlogXextShapeGetBase (ExtensionInfo *extinfo)
1213 RETURN_IF_FAIL (extinfo != NULL);
1215 extinfo->req_func = _EvlogRequestXextShape;
1216 extinfo->evt_func = _EvlogEventXextShape;
1217 extinfo->rep_func = _EvlogReplyXextShape;
1219 ExtensionEntry *xext = CheckExtension (SHAPENAME);
1220 RETURN_IF_FAIL (xext != NULL);
1221 RETURN_IF_FAIL (extinfo != NULL);
1223 extinfo->opcode = xext->base;
1224 extinfo->evt_base = xext->eventBase;
1225 extinfo->err_base = xext->errorBase;
1226 extinfo->req_func = _EvlogRequestXextShape;
1227 extinfo->evt_func = _EvlogEventXextShape;
1228 extinfo->rep_func = _EvlogReplyXextShape;