Отключите Углерод звуковой сигнал прокрутки Emacs

То, что вы ищете , не в ядре. это находится в библиотеке C. К сожалению, историческая библиотека C не является частью linux-0.11.tar.gz, поэтому мы можем только предполагать, как она написана.

Библиотека C использует этот макрос из <unistd.h>:

#define _syscall0(type,name) \
type name(void) \
{ \
long __res; \
__asm__ volatile ("int [110]x80" \
        : "=a" (__res) \
        : "0" (__NR_##name)); \
if (__res >= 0) \
        return (type) __res; \
errno = -__res; \
return -1; \
}

с аргументами int, fork (да, похоже, он не использует pid_t в качестве возвращаемого значения, даже если этот тип существует) , который расширится до

int fork(void) { 
    long __res; 
    __asm__ volatile ("int [111]x80" : 
                      "=a" (__res) : 
                      "0" (__NR_fork)); 
    if (__res >= 0) 
        return (int) __res; e
    errno = -__res; 
    return -1;
}

Это определение функции скомпилировано в одной единице перевода библиотеки C. Кроме того, файл unistd.h ядра является тем, который доступен для пользовательского пространства.

Встроенный ассемблер просто помещает значение __NR_fork в eax, вызывает прерывание 0x80 и получает возвращаемое значение __res из eax.

Прерывание 0x80 поступает в _system_call из system_call.s, который имеет следующий код:

.align 2
_system_call:
        cmpl $nr_system_calls-1,%eax
        ja bad_sys_call
        [...]
        call _sys_call_table(,%eax,4)
        [...]
        iret

, т.е. eax сначала сравнивают с максимальным номером системного вызова, и, если указано выше, возникает ошибка; затем eax 4-байтовый указатель вызывается из таблицы системных вызовов, и, наконец, iret возвращается из прерывания, возвращаемое значение вызываемой функции сохраняется в eax.

10
задан 17 of 26 8 April 2009 в 20:14
поделиться

3 ответа

(setq visible-bell t)

Это заставляет emacs высветиться вместо звукового сигнала.

8
ответ дан 3 December 2019 в 18:36
поделиться

Необходимо будет настроить ring-bell-function.

Эта страница может обеспечить подсказки:

http://www.emacswiki.org/emacs/AlarmBell

3
ответ дан 3 December 2019 в 18:36
поделиться

Использование подсказок из Страница Emacs wiki AlarmBell , это делает это для меня:

(defun my-bell-function ()
  (unless (memq this-command
        '(isearch-abort abort-recursive-edit exit-minibuffer
              keyboard-quit mwheel-scroll down up next-line previous-line
              backward-char forward-char))
    (ding)))
(setq ring-bell-function 'my-bell-function)

Если вы не знаете название команды, нажмите Ch k , затем нажмите клавишу / действие, которое вы хотели бы получить имя из.

7
ответ дан 3 December 2019 в 18:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: