2010-12-16 5 views
1

Я только что начал создавать минимальный X-сервер для Windows с нуля. По мере того, как я работаю над этим, я уверен, что столкнусь со всеми ошибками и глюками, когда я работаю с ошибками и узнаю больше о протоколе.Нужна помощь Понимание ошибок протокола X11

Вот пример ошибки я видел напечатанный клиентом:

X Error of failed request: 0 
    Major opcode of failed request: 0() 
    Serial number of failed request: 0 
    Current serial number in output stream: 3 

Основной смысл опкод кажется довольно очевидным, но где «X» Error коды определены?

Каковы серийные номера неудавшегося запроса и выходного потока? Они должны соответствовать друг другу? По потоку вывода, означает ли это то, что было отправлено на xserver или что было отправлено в xclient? Связано это с порядковыми номерами?

+0

Вы уверены, что имеете в виду «X-сервер», а не «X-клиент», который является сервером, который форматирует отображения, которые клиент представляет собой программу, выполняющую запросы. – 2010-12-16 02:21:09

+0

Да. Хотя я работаю над созданием x-сервера, клиент сообщает об ошибке. – 2010-12-16 03:11:49

ответ

2

Grep источник ...

в libx11, XlibInt.c, _XPrintDefaultError() вы можете найти это сообщение об ошибке.

Большая часть напечатанной информации относится к событию ошибки, которое предположительно отправляется вашим сервером.

В настоящее время Сериал dpy-> запрос, который находится в Xlibint.h:

unsigned long request; /* sequence number of last request. */ 

т.е. последнего запроса X, который был послан. Это может быть или не быть таким же, как запрос, вызывающий ошибку. (event-> serial должен быть запросом, вызвавшим ошибку, но ваш сервер, возможно, не получил это право)

Чтобы надеяться закодировать сервер X, я думаю, вы будете много копаться в исходном коде - документы не являются точными или достаточно тщательными ... действительно, вы можете использовать некоторые из существующих кодов, лицензия достаточно либеральная.

3

Коды ошибок определены в главе спецификации протокола X, которая называется Errors. Другие пункты в ответе об ошибке определены в первой главе Protocol Formats. Фактические значения и расположение сообщений об ошибках находятся в Errors section of the Protocol Encoding appendix.

Из содержимого этого сообщения, хотя оно появляется, вы отправляете ответ, заполненный нулями, когда клиент не ожидает ответа - большинство запросов на сервер X не должны получать ответ, отправленный обратно по протоколу, если только они не смогли.

Смежные вопросы