Size: a a a

2020 July 14

EK

Evgeny Khramtsov in ErlangRus
ну там без бутылки не разберёшься
источник

ИИ

Иванов Иванов... in ErlangRus
Alex Bubnov
может кто-нибудь на пальцах объяснить, зачем нужен erts_dirty_process_signal_handler и что вообще такое dirty process, с которыми он работает?
а что за проблема с ними, если не секрет
источник

EK

Evgeny Khramtsov in ErlangRus
dirty process - это вроде который на dirty шедулере выполняется, но это неточно :)
источник

AB

Alex Bubnov in ErlangRus
Alex Bubnov
может кто-нибудь на пальцах объяснить, зачем нужен erts_dirty_process_signal_handler и что вообще такое dirty process, с которыми он работает?
он почему-то нашелся в топе по редукциям при нагрузочном тестировании
источник

AB

Alex Bubnov in ErlangRus
и я сейчас пытаюсь уловить, что это вообще может значить
источник

VS

Vladimir Sekisov in ErlangRus
запустите msacc при тестировании,
хоть идею получите, чем
шедулер занимался
источник

AB

Alexander Beniaminov in ErlangRus
источник
2020 July 15

YT

Yauheni Tsiarokhin in ErlangRus
господа подскажите
решил я почитать сорцы отп
и хочу почитать что там в модуле
erlang

склонил я значит репу отпшную
нашел вот здесь
erts/preloaded/src/erlang.erl
этот модуль

а там все функции определены примерно вот так
-spec spawn(Module, Function, Args) -> pid() when  
     Module :: module(),                          
     Function :: atom(),                          
     Args :: [term()].                            
spawn(_Module, _Function, _Args) ->                
   erlang:nif_error(undefined).                  


где реальное определение может быть?
источник

SP

Sergey Prokhorov in ErlangRus
Поищи bif.tab файл. В нем маппинг
источник

YT

Yauheni Tsiarokhin in ErlangRus
хм
источник

SP

Sergey Prokhorov in ErlangRus
Или erl_bif.tab, точно не помню
источник

a

arikai in ErlangRus
erts/emulator/beam/bif.c имеет большую часть функций
источник

a

arikai in ErlangRus
По сути файл содержит fallback’и если вдруг по какой-то странной причине нифы (нативные функции) не были загружены
источник

YT

Yauheni Tsiarokhin in ErlangRus
ах вот оно че
спаисбо за пояснение
источник

a

arikai in ErlangRus
Найти по проекту можно очень просто: ищи определение functionname_arity в одном из .c файлов проекта
источник

a

arikai in ErlangRus
При загрузке нифов, встроенных в Эрланг или сторонних, они перекрывают (shadow) реализованные на самом языке функции. Достаточно популярная штука вне зависимости от языка
источник

a

arikai in ErlangRus
arikai
Найти по проекту можно очень просто: ищи определение functionname_arity в одном из .c файлов проекта
Касательно этого пример:
хочешь найти сорцы к spawn_link/3
Ищешь по проекту spawn_link_3 в .c/.h файлах
источник

YT

Yauheni Tsiarokhin in ErlangRus
arikai
При загрузке нифов, встроенных в Эрланг или сторонних, они перекрывают (shadow) реализованные на самом языке функции. Достаточно популярная штука вне зависимости от языка
может про такой подход можно почитать гденибудь?
ато я чтото не понимаю
вот есть функция эрланговая с диалайзер спекой
но она перекрыта какойто нифкой

хочется понять что именно занимается тем что при вызове к примеру erlang:spawn вызывает сишную функцию
источник

a

arikai in ErlangRus
https://erlang.org/doc/tutorial/nif.html
Even if all functions of a module are NIFs, an Erlang module is still needed for two reasons:
 - The NIF library must be explicitly loaded by Erlang code in the same module.
 - All NIFs of a module must have an Erlang implementation as well.

Normally these are minimal stub implementations that throw an exception. But they can also be used as fallback implementations for functions that do not have native implemenations on some architectures.
источник

YT

Yauheni Tsiarokhin in ErlangRus
arikai
https://erlang.org/doc/tutorial/nif.html
Even if all functions of a module are NIFs, an Erlang module is still needed for two reasons:
 - The NIF library must be explicitly loaded by Erlang code in the same module.
 - All NIFs of a module must have an Erlang implementation as well.

Normally these are minimal stub implementations that throw an exception. But they can also be used as fallback implementations for functions that do not have native implemenations on some architectures.
благодарю
источник