Представлен (https://lkml.org/lkml/2013/11/6/419) релиз системы динамической трассировки SystemTap 2.4 (http://sourceware.org/systemtap/), предоставляющий для платформы Linux средства похожие на технологию DTrace. SystemTap позволяет организовать доскональное наблюдение за работающей Linux системой, производить сбор статистики о работе приложений, профилирование и контроль системных вызовов. Управление производится через интерфейс командной строки и специальный Си-подобный язык сценариев (http://sourceware.org/systemtap/documentation.html). Система протестирована с ядрами Linux начиная с версии 2.6.9 и заканчивая 3.11.6.В развитии проекта участвуют такие компании как Red Hat, IBM, Intel, Hitachi и Oracle. В каталоге примеров (http://sourceware.org/systemtap/examples/keyword-index.html) представлено более 100 скриптов на все случаи жизни, подходящие для слежения за распределением памяти, вводом/выводом, дисковыми операциями, сетевым трафиком (например, анализ работы NFS), работой планировщика задач, обработкой прерываний, использованием системных буферов, установкой блокировок, выполнением системных вызовов, обработкой сигналов и т.п.
В новом выпуске добавлена поддержка контрольных вызовов для отслеживания работы виртуальных машин, что позволяет осуществлять отладку в виртуальных окружениях из хост-системы с использованием libvirt. Например: "stap -ve 'probe timer.s(1) { printf("hello!\n") }' --remote=libvirt://MyVirtualMachine". Увеличена информативность сообщений об ошибках, исключён вывод дублирующихся ошибок. Добавлена поддержка отладочных секций ".gnu_debugdata". Добавлены новые примеры использования SystemTap: strace.stp (симулятор strace), semop-watch.st (отслеживание работы системных вызовов semop/semtimedop), futexes2.stp (отслеживание futex), last_100_frees.stp (вывод последних 100 вызовов libc-функции free).URL: https://lkml.org/lkml/2013/11/6/419
Новость: http://www.opennet.ru/opennews/art.shtml?num=38395
Не нужно. Ждем ktap в апстриме
> более 100 скриптов на все случаи жизниа чтобы кофе варил — есть такой? я волнуюсь: вдруг не все случаи охвачены!
есть, сначала носки стирает, а потом варит кофе.
> есть, сначала носки стирает, а потом варит кофе.с водой, которая осталась от стирки носков?
Ого! М'сье то бля естэт! И таки знает толк в ...
Прямо сверкаешь новыми гранями! Смотри не преборщи. Про один раз , да :)
гы, а я вижу идею ты схватил правильно )
> а чтобы кофе варил — есть такой?Сперва стандартизируй периферию. Когда будет стандартный usb-класс "кофеварка" - будет варить :)
>> а чтобы кофе варил — есть такой?
> Сперва стандартизируй периферию. Когда будет стандартный usb-класс «кофеварка» — будет
> варить :)ненене. сказали, что на все случаи жизни. значит, и на нестандартную кофеварку должно быть!
> ненене. сказали, что на все случаи жизни. значит, и на нестандартную кофеварку
> должно быть!А на нестандартную как обычно пробухтят "patches are welcome" :).
>> ненене. сказали, что на все случаи жизни. значит, и на нестандартную кофеварку
>> должно быть!
> А на нестандартную как обычно пробухтят «patches are welcome» :).то есть, опять обманули. ну что за люди такие…
> то есть, опять обманули. ну что за люди такие…Почему сразу обманули? Это у тебя в системе нет драйверов под нестандартное оборудование, система отладки в этом не виновата :).
CXX stap-tapsets.o
tapsets.cxx: В функции «void validate_module_elf(Dwfl_Module*, const char*, base_query*)»:
tapsets.cxx:1998:10: ошибка: нет декларации «EM_AARCH64» в этой области видимости
tapsets.cxx: In constructor «sdt_uprobe_var_expanding_visitor::sdt_uprobe_var_expanding_visitor(systemtap_session&, int, const string&, const string&, const string&, stap_sdt_probe_type, const string&, int)»:
tapsets.cxx:5613:31: ошибка: нет декларации «EM_AARCH64» в этой области видимости
Пля... дятлы, выбор архитектуры бинарника вкуячили в код этого бинарника. :)
switch (elf_machine)
{
case EM_386:
expect_machine = "i?86";
if (! q->has_process) break; // 32-bit kernel/module
case EM_X86_64:
expect_machine2 = "x86_64";
break;
case EM_PPC:
case EM_PPC64:
expect_machine = "powerpc";
break;
case EM_S390: expect_machine = "s390"; break;
case EM_IA_64: expect_machine = "ia64"; break;
case EM_ARM: expect_machine = "arm*"; break;
case EM_AARCH64: expect_machine = "arm64"; break;
default: expect_machine = "?"; break;
}А кто-нить видел в живую эмулятор S390 под ARM? :)
---
Зато флаг компилера -Werror поставил/usr/include/bits/stdio2.h: В функции «do_file.part.3»:
/usr/include/bits/stdio2.h:282:2: ошибка: call to «__fread_chk_warn» declared with attribute warning: fread called with bigger size * nmemb than length of destination buffer [-Werror]
lto1: all warnings being treated as errors
lto-wrapper: gcc завершилась с кодом возврата 1
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: lto-wrapper failed
мало того, что учётка на хабре, так ещё и сообщения компилятора на русском. а я думал, ниже некуда, дно. но тут снизу постучали…
> так ещё и сообщения компилятора на русском.Не печалься, и ты можешь быть крутым!
$ rpm -qf /usr/share/locale-langpack/ru_RU.UTF-8/LC_MESSAGES/gcc-4.7.mo
gcc47-locale-4.7.1_20120723-1.1.1.x86_64
> Не печалься, и ты можешь быть крутым!неа, не могу. во-первых, нет у меня rpm. а во-вторых, терминал в koi8.
Бздун, ты весь опеннет забздел уже своими высерами.
> Бздун, ты весь опеннет забздел уже своими высерами.то ли дело твои взвешеные, краткие комментарии, наполненые фактами. продолжай в том же духе.
> Бздун, ты весь опеннет забздел уже своими высерами.Он не бздун, он слакварщик. Ждем разрыва хомячка (и его шаблона) на куски.
Просто наш Кэп .. эээ как бы это сказать... он немнго bonebag. Ненене, не надо тащить серебряные пули и осиновый кол. Даже некромансер может быть полезным.
> Просто наш Кэп .. эээ как бы это сказать... он немнго bonebag.
> Ненене, не надо тащить серебряные пули и осиновый кол. Даже некромансер
> может быть полезным.Некромантия и некрофилия разные вещи :)
>> Не печалься, и ты можешь быть крутым!
> неа, не могу. во-первых, нет у меня rpm. а во-вторых, терминал в koi8.У тебя всё впереди, Торвальдц в том году тоже не знал команду export TZ="America/Los_Angeles"
> У тебя всё впереди, Торвальдц в том году тоже не знал команду
> export TZ="America/Los_Angeles»а я и до сих пор не знаю. «америка» — это где? «лос анджелес» — это что?
>> У тебя всё впереди, Торвальдц в том году тоже не знал команду
>> export TZ="America/Los_Angeles»
> а я и до сих пор не знаю. «америка» — это где?Вест Индия, там рядом, пять минут на маршрутке.
> «лос анджелес» — это что?А это Лось-Ангел - хранитель всех лосей.
> мало того, что учётка на хабре, так ещё и сообщения компилятора на
> русском. а я думал, ниже некуда, дно. но тут снизу постучали…Действительно. Я дважды поделил на ноль. Хотя может павлин именно этого и добивался? :)
>> мало того, что учётка на хабре, так ещё и сообщения компилятора на
>> русском. а я думал, ниже некуда, дно. но тут снизу постучали…
> Действительно. Я дважды поделил на ноль. Хотя может павлин именно этого и
> добивался? :)x/0 = ∞, -x/0 = -∞;
> x/0 = ∞, -x/0 = -∞;Тут ничего не говорится про знак x. А если x = 0? 0/0 = ∞. -0/0 = -∞. Круто.
>0/0 = ∞. -0/0 = -∞. Круто.Чтоб моск не взорвало: -0/0 == (-1)*0/0 = и таки да = -∞.
А вот с -(0/0) - жопа.
Бредите.
0/0 != ∞
0/0 == 0*∞
так что в лучшем случае получите ∀
> x/0 = ∞, -x/0 = -∞;А зачем вы яйца рисуете?
> А кто-нить видел в живую эмулятор S390 под ARM? :)Мсье знает толк в извращениях! :)
>> А кто-нить видел в живую эмулятор S390 под ARM? :)
> Мсье знает толк в извращениях! :)Мсье его собрал, благо опен сорс. Ну а че - какую нить ES-1033 порвёт как Тузик грелку :)
> Мсье его собрал, благо опен сорс.Еще скажите что на 64-битном ARM, на который павлин каркал :)
конешн ;)
Кавно старое, под 3.12 не работает... :)
from /tmp/stapNOFLI4/stap_2e2f23847ff6d23772c8c428bbeab43c_1249_src.c:24:
/usr/share/systemtap/runtime/linux/../linux/regs.c: В функции «_stp_print_regs»:
/usr/share/systemtap/runtime/linux/../linux/regs.c:58:4: ошибка: «struct pt_regs» не содержит элемента с именем «rip»
/usr/share/systemtap/runtime/linux/../linux/regs.c:58:20: ошибка: «struct pt_regs» не содержит элемента с именем «rsp»
/usr/share/systemtap/runtime/linux/../linux/regs.c:58:36: ошибка: «struct pt_regs» не содержит элемента с именем «eflags»
/usr/share/systemtap/runtime/linux/../linux/regs.c:60:4: ошибка: «struct pt_regs» не содержит элемента с именем «rax»
/usr/share/systemtap/runtime/linux/../linux/regs.c:60:20: ошибка: «struct pt_regs» не содержит элемента с именем «rbx»
/usr/share/systemtap/runtime/linux/../linux/regs.c:60:36: ошибка: «struct pt_regs» не содержит элемента с именем «rcx»
/usr/share/systemtap/runtime/linux/../linux/regs.c:62:4: ошибка: «struct pt_regs» не содержит элемента с именем «rdx»
/usr/share/systemtap/runtime/linux/../linux/regs.c:62:20: ошибка: «struct pt_regs» не содержит элемента с именем «rsi»
/usr/share/systemtap/runtime/linux/../linux/regs.c:62:36: ошибка: «struct pt_regs» не содержит элемента с именем «rdi»
/usr/share/systemtap/runtime/linux/../linux/regs.c:64:4: ошибка: «struct pt_regs» не содержит элемента с именем «rbp»
In file included from /usr/share/systemtap/runtime/linux/runtime.h:187:0,
from /usr/share/systemtap/runtime/runtime.h:24,
from /tmp/stapNOFLI4/stap_2e2f23847ff6d23772c8c428bbeab43c_1249_src.c:24:
/usr/share/systemtap/runtime/linux/../regs.c: В функции «_stp_get_sp»:
/usr/share/systemtap/runtime/linux/../regs.c:57:9: ошибка: «struct pt_regs» не содержит элемента с именем «rsp»
/usr/share/systemtap/runtime/linux/../regs.c: В функции «_stp_get_arg32_by_number»:
/usr/share/systemtap/runtime/linux/../regs.c:105:28: ошибка: «struct pt_regs» не содержит элемента с именем «rax»
/usr/share/systemtap/runtime/linux/../regs.c:106:28: ошибка: «struct pt_regs» не содержит элемента с именем «rdx»
/usr/share/systemtap/runtime/linux/../regs.c:107:28: ошибка: «struct pt_regs» не содержит элемента с именем «rcx»
/usr/share/systemtap/runtime/linux/../regs.c: В функции «_stp_get_arg64_by_number»:
/usr/share/systemtap/runtime/linux/../regs.c:132:18: ошибка: «struct pt_regs» не содержит элемента с именем «rdi»
/usr/share/systemtap/runtime/linux/../regs.c:133:18: ошибка: «struct pt_regs» не содержит элемента с именем «rsi»
/usr/share/systemtap/runtime/linux/../regs.c:134:18: ошибка: «struct pt_regs» не содержит элемента с именем «rdx»
/usr/share/systemtap/runtime/linux/../regs.c:135:18: ошибка: «struct pt_regs» не содержит элемента с именем «rcx»
In file included from /usr/share/systemtap/runtime/transport/transport.c:23:0,
from /usr/share/systemtap/runtime/linux/print.c:17,In file included from /usr/share/systemtap/runtime/transport/transport.c:61:0,
from /usr/share/systemtap/runtime/linux/print.c:17,
from /usr/share/systemtap/runtime/print.c:17,
from /usr/share/systemtap/runtime/runtime_context.h:22,
from /tmp/stapNOFLI4/stap_2e2f23847ff6d23772c8c428bbeab43c_1249_src.c:62:
/usr/share/systemtap/runtime/transport/relay_v2.c: В функции «__stp_relay_create_buf_file_callback»:
/usr/share/systemtap/runtime/transport/relay_v2.c:238:24: ошибка: incompatible types when assigning to type «kuid_t» from type «uid_t»
/usr/share/systemtap/runtime/transport/relay_v2.c:239:24: ошибка: incompatible types when assigning to type «kgid_t» from type «gid_t»
/usr/share/systemtap/runtime/transport/relay_v2.c: На верхнем уровне:
/usr/share/systemtap/runtime/transport/relay_v2.c:246:2: ошибка: несовместимый тип указателя в инициализации [-Werror]
/usr/share/systemtap/runtime/transport/relay_v2.c:246:2: ошибка: (где-то рядом с инициализацией для «__stp_relay_callbacks.create_buf_file») [-Werror]
/usr/share/systemtap/runtime/transport/relay_v2.c: В функции «_stp_transport_data_fs_init»:
/usr/share/systemtap/runtime/transport/relay_v2.c:307:47: ошибка: incompatible types when assigning to type «kuid_t» from type «uid_t»
/usr/share/systemtap/runtime/transport/relay_v2.c:308:47: ошибка: incompatible types when assigning to type «kgid_t» from type «gid_t»
Как меня заёб этот опенсорс, пока пля всё настроишь уже ничё делать не хочется.
Первый релиз кандидат 3.12 ядра вышел 11 сентября, хули они дам делали два месяца?!
> Как меня заёб этот опенсорс, пока пля всё настроишь уже ничё делать
> не хочется .а ты сразу ничего не делай: результат тот же самый, а усилий потрачено значительно меньше.
>> Как меня заёб этот опенсорс, пока пля всё настроишь уже ничё делать
>> не хочется .
> а ты сразу ничего не делай: результат тот же самый, а усилий
> потрачено значительно меньше.Да ёпть, думал по быстренькому протрейсю софтику... на ядрищах 3.2.52 и 3.12,
потому как на 3.12 оно не хрена не работает, потому что API переделали.
Вместо того, чтоб трахацца со своим софтом, трахаю эти поделки.
ну, хоть какое-то удовольствие постарайся тогда получить, что ли…
> Как меня заёб этот опенсорс, пока пля всё настроишь уже ничё делать не хочется.Не то что блоб нвидии, да? Тот, наверное, так бы и патчил под 3.12 целыми днями чисто ради удовольствия...
Можно было, конечно, просто прочитать по ссылке, с какими ядрами тестировалось и должно работать, и взять соответствующее ядро - но мы не ищем лёгких путей
странный ты человек. ну вот надо ему на 3.12 — так он не просто ноет и яйца проветривает, а таки пытается на 3.12 запустить. глядишь — патчи потом отправит. так нет, завсегда придёт Самый Умный и скажет: «да чего ты мудохаешься, дурилка? ты подожди, волшебник на голубом вертолёте всё сделает!»
> странный ты человек. ну вот надо ему на 3.12 — так он не просто ноетНу пока что видно как раз просто нытье: "Как меня заёб этот опенсорс, пока пля всё настроишь уже ничё делать не хочется. Первый релиз кандидат 3.12 ядра вышел 11 сентября, хули они дам делали два месяца?!"
> глядишь — патчи потом отправит
И что теперь, уже нужно прямо сейчас начинать ему в ноги кланяться? Вот если отправит - то и ответ на патчи, может быть, другой будет. А пока что я отвечал на его коммент.
> так нет, завсегда придёт Самый Умный и скажет: «да чего ты мудохаешься, дурилка? ты подожди, волшебник на голубом вертолёте всё сделает!
Просто не могу смотреть как человек страдает, вконец измученный опенсорсом.
Пусть уж лучше сделает кто-нибудь, кому это for fun.
> Ну пока что видно как раз просто нытьену да, не прислал тебе почасовой отчёт. сволочь, однозначно. и что он там делал весь этот день?!
> И что теперь, уже нужно прямо сейчас начинать ему в ноги кланяться?
достаточно не срать в колодец. потому что так можно попасть не в колодец, а себе за шиворот.
> Вот если отправит — то и ответ на патчи, может быть,
> другой будет. А пока что я отвечал на его коммент.пока что от него я рабочие патчи видел прямо на опеннете, а от тебя — ни одного.
> Просто не могу смотреть как человек страдает, вконец измученный опенсорсом.
> Пусть уж лучше сделает кто-нибудь, кому это for fun.почитай на досуге про сарказм. и про чувство юмора. имитировать сам их не пытайся, но попробуй хотя бы научиться распознавать.
> достаточно не срать в колодец. потому что так можно попасть не в колодец, а себе за шиворот.Поверю на слово.
> пока что от него я рабочие патчи видел прямо на опеннете, а от тебя — ни одного.
А от Торвальдса ты видел рабочие патчи в комментах на опеннете?
Может просто нормальные люди свои патчи где-то в более подходящих местах обычно публикуют, не задумывался об этом?
Если только, конечно, кто-то не пытается из-себя тут что-то строить - а это обычно нужно только тем, кто на самом деле мало что из себя представляет.
> А от Торвальдса ты видел рабочие патчи в комментах на опеннете?
> Может просто нормальные люди свои патчи где-то в более подходящих местах обычно
> публикуют, не задумывался об этом?всё на свете может быть. тем не менее, факты таковы, что патчи от павлина я видел, а патчи от тебя — нет. возможно, линус вообще всё под твою диктовку пишет — но в данном контексте это неважно.
важно то, что павлин кроме сарказма продемонстрировал умение хоть какие-то патчи делать, и даже я однострочник-другой в комментариях кидал, а ты — нет. поэтому твой наезд на павлина выглядит просто попыткой почесать ЧСВ. и не важно, является ли он этим на самом деле — важно то, что он так выглядит.
> Может просто нормальные люди свои патчи где-то в более подходящих
> местах обычно публикуют, не задумывался об этом?может, некоторые люди патчи не «исключительно на опеннете» публикуют, а «и на опеннете тоже» — не задумывался об этом? в частности, небольшой патч, который избавляет от неких проблем, вполне логично опубликовать *и здесь тоже* — просто для того, чтобы зашедший человек не гуглил дополнительно.
> патчи от павлина я видел, а патчи от тебя — нетЭто должно иметь для меня какое-то значение? Думаю, нет, мне в принципе все равно, чьи патчи и где ты видел. Так о чем мы тут вообще?
> важно то, что павлин кроме сарказма продемонстрировал умение хоть какие-то патчи делать
Кому важно? Если это важно тебе, то это еще не значит, что это важно мне и всем остальным. Я, возможно, тебя разочарую - но ты не центр вселенной.
> и не важно, является ли он этим на самом деле — важно то, что он так выглядит
Хорошо, то есть не важно, что есть на самом деле, а важно то, как выглядит чей-то коммент на опеннете, правильно я тебя понимаю? Ну так вот для меня коммент павлина выглядел именно так, чтобы у меня появилось желание на него соответственно ответить, и мне тоже не важно, как и тебе насчет меня, что он там подразумевал и сколько патчей он запостил на опеннете или отправил в спортлото.
У тебя мой коммент вызвал примерно такое же желание, и ты ответил. Окей, но что ты дальше пытаешься доказать, кому, и зачем? Что павлин - гигант мысли и отец русской демократии, а я - бесполезный аноним? Вряд ли ты всерьез надеешься меня в этом убедить, тогда кого - себя?
> что ты дальше пытаешься доказать, кому, и зачем?что ты мелешь глупости. как вижу, не получилось. неужели мне опять дурак попался? беда.
> что ты мелешь глупости. как вижу, не получилось. неужели мне опять дурак попался? беда.Не переживай так, а то речь твоя становится слишком отрывистой и бессвязной. Лучше возвращайся в свой уютненький виртуальный мирок, в котором ты, светоч мудрости всея опеннета, мощью своего интеллекта отечески наставляешь глупых анонимов на путь истинный. Не буду больше тебя отвлекать.
таки дурак. жаль.
дык с нвыдией человек (pavlinux) разобрался в проблеме, решил её и патчи для полу-хомяков выложил, кстати кул-хабро*бы его незаслуженно обосрали, читал я пост на швабре ...
и тут тоже разберётся, если захочет.
такие люди опенсорцу как раз и нужны, а не долбодятлы-онанимы которых в школе даже троллить грамотно не научили.
> Первый релиз кандидат 3.12 ядра вышел 11 сентября, хули они дам делали
> два месяца?!По конферецциям же катались. Для фана и профита. И тебе б расслабиться.
linux-3.12 fixes
diff --git a/runtime/linux/alloc.c b/runtime/linux/alloc.c
index 7e7e5ce..c12c360 100644
--- a/runtime/linux/alloc.c
+++ b/runtime/linux/alloc.c
@@ -441,7 +441,7 @@ static void *_stp_alloc_percpu(size_t size)
#ifdef STAPCONF_ALLOC_PERCPU_ALIGN
ret = __alloc_percpu(size, 8);
#else
- ret = __alloc_percpu(size);
+ ret = __alloc_percpu(size, 8);
#endif
#ifdef DEBUG_MEM
if (likely(ret)) {
diff --git a/runtime/linux/regs.c b/runtime/linux/regs.c
index a7501dd..f8b910c 100644
--- a/runtime/linux/regs.c
+++ b/runtime/linux/regs.c
@@ -41,11 +41,11 @@
#if defined (__x86_64__)
#ifdef STAPCONF_X86_UNIREGS
-#define EREG(nm, regs) ((regs)->nm)
-#define RREG(nm, regs) ((regs)->nm)
-#else
#define EREG(nm, regs) ((regs)->e##nm)
#define RREG(nm, regs) ((regs)->r##nm)
+#else
+#define EREG(nm, regs) ((regs)->nm)
+#define RREG(nm, regs) ((regs)->nm)
#endif
static void _stp_print_regs(struct pt_regs * regs)
diff --git a/runtime/regs.h b/runtime/regs.h
index 2f027ad..b1d0743 100644
--- a/runtime/regs.h
+++ b/runtime/regs.h
@@ -11,7 +11,7 @@
#ifndef _REGS_H_ /* -*- linux-c -*- */
#define _REGS_H_
-#if defined (STAPCONF_X86_UNIREGS) && (defined (__x86_64__) || defined (__i386__))
+#if defined (STAPCONF_X86_UNIREGS) && defined (__i386__)
#define REG_IP(regs) regs->ip
#define REG_SP(regs) regs->sp
diff --git a/runtime/transport/relay_v2.c b/runtime/transport/relay_v2.c
index 6c9815d..4e1e3cd 100644
--- a/runtime/transport/relay_v2.c
+++ b/runtime/transport/relay_v2.c
@@ -202,14 +202,13 @@ static int __stp_relay_remove_buf_file_callback(struct dentry *dentry)
debugfs_remove(dentry);
return 0;
}
-
static struct dentry *
__stp_relay_create_buf_file_callback(const char *filename,
struct dentry *parent,
#ifdef STAPCONF_RELAY_UMODE_T
umode_t mode,
#else
- int mode,
+ umode_t mode,
#endif
struct rchan_buf *buf,
int *is_global)
@@ -241,7 +240,7 @@ __stp_relay_create_buf_file_callback(const char *filename,
return file;
}
-static struct rchan_callbacks __stp_relay_callbacks = {
+static struct rchan_callbacks __stp_relay_callbacks = {
.subbuf_start = __stp_relay_subbuf_start_callback,
.create_buf_file = __stp_relay_create_buf_file_callback,
.remove_buf_file = __stp_relay_remove_buf_file_callback,
diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c
index e81ac7d..ef52000 100644
--- a/runtime/transport/transport.c
+++ b/runtime/transport/transport.c
@@ -532,7 +532,7 @@ static struct dentry *_stp_get_root_dir(void)
sb = hlist_entry(fs->fs_supers.first, struct super_block,
s_instances);
#else
- sb = list_entry(fs->fs_supers.next, struct super_block,
+ sb = list_entry(fs->fs_supers.first, struct super_block,
s_instances);
#endif
_stp_lock_inode(sb->s_root->d_inode);
diff --git a/runtime/uidgid_compatibility.h b/runtime/uidgid_compatibility.h
index 017142c..6d01777 100644
--- a/runtime/uidgid_compatibility.h
+++ b/runtime/uidgid_compatibility.h
@@ -12,10 +12,10 @@
#define _UIDGID_COMPATIBILITY_H_
#ifndef STAPCONF_LINUX_UIDGID_H
-
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
#define KUIDT_INIT(value) ((uid_t) value)
#define KGIDT_INIT(value) ((gid_t) value)
-
+#endif
#else
#include <linux/cred.h>
diff --git a/tapsets.cxx b/tapsets.cxx
index 9755bf3..292700f 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -24,6 +24,7 @@
#include "dwflpp.h"
#include "setupdwfl.h"
#include <gelf.h>
+#include <linux/elf-em.h>
#include "sdt_types.h"Хеловорд работает :) C остальными позже... В общем шаблоны переделывать нужно.
#stap -ve 'probe begin { log("hello world") exit () }'
Подскажыте пож. поставил systemtap на centos 6.7
пробую запускать скрипты: stap loadavg.stp
и вывод:
usage error: tapset file '/usr/share/systemtap/tapset/linux/loadavg.stp' cannot be run directly as a session script.
parse error: embedded code in unprivileged script; need stap -g
saw: embedded-code at loadavg.stp:14:1
source: %{
^3 parse errors.
Pass 1: parse failed. [man error::pass1]
Number of similar error messages suppressed: 2.
Rerun with -v to see them.Не могу нагуглить проблему.
[root@localhost linux]# stap -v loadavg.stp
usage error: tapset file '/usr/share/systemtap/tapset/linux/loadavg.stp' cannot be run directly as a session script.
parse error: embedded code in unprivileged script; need stap -g
saw: embedded-code at loadavg.stp:14:1
source: %{
^parse error: embedded code in unprivileged script; need stap -g
saw: embedded-code at loadavg.stp:32:45
source: function get_loadavg_index:long (indx:long) %{ /* pure */
^parse error: embedded code in unprivileged script; need stap -g
saw: embedded-code at loadavg.stp:50:35
source: function sprint_loadavg:string () %{ /* pure */
^3 parse errors.
Pass 1: parsed user script and 107 library script(s) using 206812virt/34704res/3308shr/31880data kb, in 130usr/10sys/148real ms.
Pass 1: parse failed. [man error::pass1]