亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: setup.S beep疑問(wèn)? [打印本頁(yè)]

作者: _nosay    時(shí)間: 2016-07-14 11:22
標(biāo)題: setup.S beep疑問(wèn)?
arch/i386/boot/setup.S, line 197~208:
  1. prtchr:        pushw        %ax
  2.         pushw        %cx
  3.         xorb        %bh, %bh
  4.         movw        $0x01, %cx
  5.         movb        $0x0e, %ah
  6.         int        $0x10
  7.         popw        %cx
  8.         popw        %ax
  9.         ret

  10. beep:        movb        $0x07, %al
  11.         jmp        prtchr
復(fù)制代碼
請(qǐng)問(wèn)"beep:  movb $0x07, %al"這條指令是發(fā)出個(gè)聲音嗎?為什么將al設(shè)置成0x07后去調(diào)用int 0x10,int 0x10不是專門控制顯示的嗎,怎么聲音也要它?
作者: Tinnal    時(shí)間: 2016-07-14 15:22
根據(jù)標(biāo)準(zhǔn)ASCII定義,輸出007字符,代表要PC響鈴。

ASCII表里定了很多非顯示的符號(hào),詳情請(qǐng)看:
http://baike.baidu.com/item/ASCII
作者: _nosay    時(shí)間: 2016-07-14 15:39
回復(fù) 2# Tinnal

,那么printf("%c\n", 7);為啥不響?顯卡和聲卡都“接收”到這個(gè)7了嗎?
作者: Tinnal    時(shí)間: 2016-07-14 23:14
在我的Fedora環(huán)境能響呀,用你的的程序我自己試了一下,是OK的。。你也可以在終端按退格,或TAB鍵,電腦也會(huì)響,如果不想就是你的終端沒(méi)有實(shí)現(xiàn)的了。因?yàn)檫@個(gè)字符是終端去處理的,PC的BIOS也能處理。


可以參考一下下面的連接:
http://www.linux.org/threads/ena ... r-system-beep.7944/
http://stackoverflow.com/questio ... ram-sounds-the-bell
作者: _nosay    時(shí)間: 2016-07-15 00:41
回復(fù) 4# Tinnal

If that fails, then try inserting the "snd_pcsp" kernel module instead of the "pcspkr" module.
不知道是不是這個(gè)原因,我明天再試試噢。
作者: nswcfd    時(shí)間: 2016-07-15 09:21
好問(wèn)題,還真沒(méi)仔細(xì)想過(guò)……

跟終端有關(guān)系吧,比如ssh里面printf '\a',總不至于觸發(fā)遠(yuǎn)程的server去beep一下吧?
作者: nswcfd    時(shí)間: 2016-07-15 18:11
1. 第一個(gè)層面,bash/readline庫(kù)有bell-style選項(xiàng),搜了一下bash的代碼,
audible模式調(diào)用printf("\b"),而visible模式調(diào)用curses::tputs輸出termcap的vb轉(zhuǎn)義串(例如\e[?5h\e[?5l),
termcap的visual bell相當(dāng)于terminfo的flash,也就是讓屏幕閃一下。

2. 無(wú)論是\b還是escape串,通過(guò)vfs送入各種tty,
tty會(huì)有一個(gè)ldisc,缺省是N_TTY (存在其它ldisc,例如N_PPP),主要用來(lái)實(shí)現(xiàn)termios里定義的各種行為(例如回顯,退格\b,raw/canonical模式的轉(zhuǎn)換),
vfs_write -> tty_write -> tty.ldisc.ops.write -> N_TTY:write_chan -> tty.driver.write -> 分支為con_write/pty_write等。

對(duì)于/dev/ttyN, con_write -> do_con_write -> do_con_trol,對(duì)escape序列進(jìn)行解釋(使用一個(gè)狀態(tài)機(jī)),
上述的5h和5l分別觸發(fā)set_mode/invert_screen,造成屏幕的閃爍。

同樣,在do_con_trol里,會(huì)調(diào)用kd_mksound,通過(guò)kbd子系統(tǒng)與各種輸入設(shè)備產(chǎn)生關(guān)聯(lián),
典型的虛擬機(jī)會(huì)有at&t keyboad, pc speaker等input device,都有可能產(chǎn)生最終的beep。
作者: _nosay    時(shí)間: 2016-07-15 18:34
回復(fù) 7# nswcfd

我對(duì)終端不了解,看不懂,總之就是跟bash和tty有關(guān)是吧?
作者: nswcfd    時(shí)間: 2016-07-15 20:24
對(duì)于pty的場(chǎng)景,則直接通過(guò)tty->link發(fā)送給ptm了,然后被app的sys_read獲得。
* 如果是是遠(yuǎn)程ssh,則被sshd發(fā)送給登錄的client,由client的軟件負(fù)責(zé)回顯\a。*
* 如果是本地ssh,sshd發(fā)送給ssh,ssh發(fā)送給當(dāng)前終端,又回到了樓上con_write的情況。
作者: _nosay    時(shí)間: 2016-07-16 13:40
回復(fù) 9# nswcfd


作者: nswcfd    時(shí)間: 2016-07-18 13:02
pts和ptm的行為上的區(qū)別,是由哪段邏輯造成的?
目前只觀察到兩者init_termios的屬性不一樣。

不知道把兩者的termio屬性交換一下,是否行為上也能交換?
作者: nswcfd    時(shí)間: 2016-07-18 19:52
貌似內(nèi)核的ioctl接口不允許修改master的termio……




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2