mdb写経/割り込み

2013/07/31

dcmds

[address] ::interrupts [-d]
PCI/PX ネクサスドライバに登録されている割り込みを表示します。

SPARC
> ::interrupts Device Type MSG # State INO Mondo Shared Pil CPU uata#0 Fixed --- enbl 0x4 0x784 no 5 0 isp#0 Fixed --- enbl 0x10 0x790 no 5 0 bge#0 Fixed --- enbl 0x16 0x796 no 6 0 bge#1 Fixed --- enbl 0x17 0x797 no 6 0 ohci#0 Fixed --- enbl 0x0 0x780 yes 9 0 ohci#1 Fixed --- enbl 0x0 0x780 yes 9 0 ohci#2 Fixed --- enbl 0x0 0x780 yes 9 0 ehci#0 Fixed --- enbl 0x1 0x781 no 9 0 pfb#0 Fixed --- enbl 0xb 0x78b no 9 0 mi2cv#1 Fixed --- enbl 0x3d 0x7bd no 4 0 mi2cv#0 Fixed --- enbl 0x3c 0x7bc no 4 0 px#0 PCIe 27 enbl 0x3b 0x7bb no 1 0 px#0 PCIe 51 enbl 0x3a 0x7ba no 14 0 px#0 PCIe 49 enbl 0x39 0x7b9 no 14 0 px#0 PCIe 48 enbl 0x38 0x7b8 no 9 0 mpt#0 MSI 0 enbl 0x18 0x798 no 5 0 power#0 Fixed --- enbl 0x3 0x7c3 no 14 0 pcf8584#0 Fixed --- enbl 0x1 0x7c1 no 4 0 px#1 PCIe 27 enbl 0x3b 0x7fb no 1 0 px#1 PCIe 51 enbl 0x3a 0x7fa no 14 0 px#1 PCIe 49 enbl 0x39 0x7f9 no 14 0 px#1 PCIe 48 enbl 0x38 0x7f8 no 9 0
> ::interrupts -d ------------------------------------------- Device: uata Instance: 0 Path: /pci@1e,600000/pci@0/pci@1/pci@0/ide@1f Inum: 0 Interrupt Type: Fixed Shared Intr: no State: 1 (Enabled) INO: 0x4 Mondo: 0x784 Pil: 5 CPU: 0 ------------------------------------------- Device: isp Instance: 0 Path: /pci@1e,600000/pci@0/pci@9/pci@0,2/pci@2/SUNW,isptwo@4 Inum: 0 Interrupt Type: Fixed Shared Intr: no State: 1 (Enabled) INO: 0x10 Mondo: 0x790 Pil: 5 CPU: 0 : :
x86
> ::interrupts IRQ Vect IPL Bus Trg Type CPU Share APIC/INT# ISR(s) 1 0x41 5 Edg Fixed 1 1 0x0/0x1 i8042_intr 9 0x80 9 PCI Lvl Fixed 1 1 0x0/0x9 acpi_wrapper_isr 12 0x42 5 Edg Fixed 0 1 0x0/0xc i8042_intr 14 0x40 5 Edg Fixed 0 1 0x0/0xe ata_intr 160 0xa0 11 Edg IPI all 0 - poke_cpu 208 0xd0 14 Edg IPI all 1 - kcpc_hw_overflow_intr 209 0xd1 14 Edg IPI all 1 - cbe_fire 210 0xd3 14 Edg IPI all 1 - cbe_fire 240 0xe0 15 Edg IPI all 1 - xc_serv 241 0xe1 15 Edg IPI all 1 - apic_error_intr
> ::interrupts -i CPU ISR(s) 1 i8042_intr 1 acpi_wrapper_isr 0 i8042_intr 0 ata_intr all poke_cpu all kcpc_hw_overflow_intr all cbe_fire all cbe_fire all xc_serv all apic_error_intr

[address] ::softint [-d]
ソフトウェア割り込みを表示します。

SPARC
> ::softint ADDR TYPE PEND PIL ARG1 ARG2 HANDLER 70008b80 S 0 4 30000e8c390 0 ghd_doneq_process 70008b40 S 0 4 30000e8c390 0 ghd_timeout_softintr 70008b00 S 0 4 30000e8c270 0 ghd_doneq_process 70008ac0 S 0 4 30000e8c270 0 ghd_timeout_softintr 70008980 S 0 4 60012962000 0 bge_chip_factotum 70008940 S 0 4 60012962000 0 bge_send_drain 700088c0 S 0 4 60012956000 0 bge_chip_factotum 70008880 S 0 4 60012956000 0 bge_send_drain 70008840 S 0 6 0 0 pm_cfb_softint 70008800 S 0 1 0 0 softlevel1 7000e2f8 M 0 9 18aec68 0 scrub_icache_line_intr 7000e1c0 M 0 9 18aec38 0 scrub_dcache_line_intr 7000e088 M 0 9 18aec08 0 scrub_ecache_line_intr 7000df50 M 0 13 0 0 xc_loop 7000de18 M 0 13 0 0 xc_serv 7000dce0 M 0 15 0 0 kcpc_hw_overflow_intr 700087c0 S 0 9 30000eab348 0 hcdi_soft_intr 70008780 S 0 9 30000eaab68 0 hcdi_soft_intr 70008740 S 0 9 30000eabb28 0 hcdi_soft_intr 700086c0 S 0 9 30000eaba48 0 hcdi_soft_intr 70008600 S 0 4 60012859540 0 power_soft_intr 70008580 S 0 10 0 0 abort_seq_softintr 70008540 S 0 2 300000b7440 0 errorq_intr 70008500 S 0 2 300000b6a40 0 errorq_intr 700084c0 S 0 1 300000b67c0 0 errorq_intr 7000dba8 M 0 10 0 0 clock_tick_execute 70008080 S 0 1 0 0 cbe_level1 70008040 S 0 10 0 0 cbe_level10 7000da70 M 0 14 0 0 cbe_level14 7000d938 M 0 13 0 0 siron_poke_cpu_intr 7000d800 M 0 13 0 0 poke_cpu_intr 70008000 S 0 1 0 0 softlevel1
x86
> ::softint ADDR PEND PIL ARG1 ARG2 ISR(s) ffffc100032e3100 0 1 ffffc10002457ac0 0 errorq_intr fffffffffc00f080 0 1 1 0 timer_softintr fffffffffc00f040 0 1 0 0 softlevel1 ffffc100032e30c0 0 2 ffffc100005e1a80 0 errorq_intr fffffffffc000b90 0 2 0 0 cbe_low_level fffffffffc00f0c0 0 2 2 0 timer_softintr fffffffffc00f100 0 3 3 0 timer_softintr ffffc100077631c0 0 4 ffffc100055fb180 0 power_soft_intr ffffc1000254d800 0 4 ffffc100000bef58 0 ghd_doneq_process ffffc1000254d840 0 4 ffffc100000bef58 0 ghd_timeout_softintr fffffffffc00f140 0 4 4 0 timer_softintr fffffffffc00f180 0 5 5 0 timer_softintr ffffc100032f5a00 0 6 0 0 pm_cfb_softint fffffffffc00f1c0 0 6 6 0 timer_softintr fffffffffc00f200 0 7 7 0 timer_softintr fffffffffc00f240 0 8 8 0 timer_softintr ffffc100032ca680 0 9 ffffc100005c8548 0 hcdi_soft_intr fffffffffc00f280 0 9 9 0 timer_softintr fffffffffc004300 0 10 0 0 lbolt_ev_to_cyclic ffffc100004b4428 0 10 0 0 clock_tick_execute fffffffffc000b50 0 10 0 0 cbe_softclock fffffffffc00f2c0 0 10 a 0 timer_softintr

walker

irmpools
walk global list of interrupt pools.
irmreqs
walk list of interrupt requests in an interrupt pool.
Read more ...

JavaScriptのライブラリをホスティングしてくれているネ申サイト

2013/07/30

Google Hosted Libraries
https://developers.google.com/speed/libraries/devguide

Microsoft Ajax Content Delivery Network
http://www.asp.net/ajaxlibrary/cdn.ashx

cdnjs - the missing cdn
http://cdnjs.com/

Cached Commons
http://cachedcommons.org/

Read more ...

mdb写経/CPU とディスパッチャー

2013/07/29

dcmds

[ address ] ::callout [-r|n] [-s|l] [-xhB] [-t|-ab nsec [-dkD]] [-C addr|-S seqid] [-f name|addr] [-p name|addr] [-T|L [-E]] [-FivVA]

コールアウトテーブル(タイマーの一覧)を表示します。各コールアウトの関数、引数、有効期限が表示されます。

-r|n (r)ealtime または (n)ormal タイプのコールアウトのみを表示します
-s|l (s)hort-term ids または (l)ong-term ids のみを表示します
-x 実行中のコールアウトのみを表示します
-h hrestimeに基づいたコールアウトのみを表示します
-B absolute timeに基づいたコールアウトのみを表示します
-t|a|b nsec a(t) 指定した時間, (a) 指定した時間より後, (b) 指定した時間より前に破棄されるコールアウトのみを表示します。-a と -b は範囲指定と共に使用する。今現在の場合は-d[t|a|b] 0 を指定する
-d -t|a|b のオプションを現在の時刻との差分として解釈します
-k -t|a|b の引数にナノセカンドの代わりに tick を使用します。tick はあまり確ではありません。他の tick と一致しないかもしれないことに注意して下さい(例: lbolt)
-D 有効期限を現在の時刻からの差分として表示します
-S seqid 指定したCPUシーケンスIDのコールアウトのみを表示します
-C addr 指定したCPUポインタのコールアウトのみを表示します
-f name|addr 指定した関数のコールアウトのみを表示します
-p name|addr 指定したパラメータの関数のコールアウトのみを表示します
-T コールアウトの代わりにコールアウトテーブルを表示します
-L コールアウトの代わりにコールアウトリストを表示します
-E -T または -L とともに使用して、空のデータ構造体を表示します
-i リストハッシュの代わりにIDハッシュを用いてコールアウトを走査します
-F フリーのコールアウトリストを表示します
-v 各項目の詳細情報を表示します
-V 走査された時に各レベルの情報の詳細を表示します
-H コールアウトヒープの中のコールアウトのみを表示します
-Q コールアウトキューの中のコールアウトのみを表示します
-A アドレスのみを表示します。パイプラインで利用できます
> ::callout SEQ T EXP XHAL XID FUNC(ARG) 0 R 34d2dcab7280 17ff6b8d8 realitexpire(ffffff00ce5d6018) 0 R 35109b7d925d H 17ff67da8 cv_wakeup(ffffff00c93bf0c0) 0 R 34b3ae26ce14 H 17ff6bf68 cv_wakeup(ffffff00c943c020) 0 R 34fc1cb196c8 H 17ff6ace8 cv_wakeup(ffffff00c96853e0) 0 R 335f46a30b00 17ff66940 cv_wakeup(ffffff0002d86c20) 0 R 33beb6d2e5f5 H 17ff67288 cv_wakeup(ffffff00c94f8b60) : : 0 R 335f15c2d600 17ff67968 sigalarm2proc(ffffff00cf3ee030) 0 N 33996d7e3300 17f8277d1 nce_timer(ffffff00ca25ad50) 0 N 335f2ecb8700 17f826409 vmem_update(0) 0 N 336037708d00 17f825f99 swrand`rnd_handler(0) 0 N 335e79003880 17f825f81 tcp_timer_callback(ffffff00ca2bb798) 0 N 4ea95c00dd00 17f962399 memscrub_wakeup(0) 0 N 335e98976100 17f825f89 mld_timeout_handler(ffffff00c6574000) : :


::calloutid [-d|v] xid

指定した extended id のコールアウトを表示します。

-d コールアウトを間接参照しないで、単純にidをデコードします
-v コールアウトについての詳細な情報を表示します
> ::calloutid 17ffc58e2 SEQ T EXP XHAL XID FUNC(ARG) 1 R 128bd8cfd9803e86 H 17ffc58e2 cv_wakeup(ffffff00cc75b420)


::class

スケジューリングクラステーブルを表示します。

> ::class SLOT NAME INIT FCN CLASS FCN 0 SYS sys_init sys_classfuncs 1 TS ts_init ts_classfuncs 2 SDC sysdc_init sysdc_classfuncs 3 FX fx_init fx_classfuncs 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0


[ address ] ::cmihdl [-c <cpuid>|<chip,core,strand>]

cmi_handle_t 構造体の内容を表示します。

> ::cmihdl HANDLE REF CPU CH/CR/ST CMT MC MODULE MODEL-SPECIFIC ---------------- --- --- -------- --- -- ------------- ------------------------ ffffff00c6021780 3 0 0/0/0 S N cpu.generic cpu_ms.GenuineIntel ffffff00c62e2480 3 1 1/0/0 S N cpu.generic cpu_ms.GenuineIntel ffffff00c62e2380 3 2 2/0/0 S N cpu.generic cpu_ms.GenuineIntel ffffff00c62e2280 3 3 3/0/0 S N cpu.generic cpu_ms.GenuineIntel

 

[ address ] ::cpc [-v]

指定されたアドレスの CPC context の内容を表示します。アドレスが指定されていない場合、全ての有効な CPC contexts を表示します。
Flag codes:
O = overflow notify U = count user events S = count system events

> ::cpc -v N PIC NDX VAL FLG PRESET CFG EVENT -------------------------------------------------------------------------------- Set: 30008ee7ea0 2 requests. Flags = 0 0 0 0 3f0fa7 OUS 0 30008d5ead0 PAPI_fp_ins 1 1 1 80000014a OUS 0 30008d5eac0 PAPI_tot_ins -------------------------------------------------------------------------------- Set: 30008ee7ed8 2 requests. Flags = 0 0 0 0 53a772 OUS 0 30008d5eb00 PAPI_fp_ins 1 1 1 b000000ca OUS 0 30008d5eaf0 PAPI_tot_ins -------------------------------------------------------------------------------- Set: 30008ee7f10 2 requests. Flags = 0 0 0 0 7e598e OUS 0 30008d5eb30 PAPI_fp_ins 1 1 1 4000000d4 OUS 0 30008d5eb20 PAPI_tot_ins : :

[ cpuid ] ::cpuinfo [-v]

各 CPU 上で現在実行されているスレッドのテーブルを表示します。オプションの CPU 番号または CPU 構造体アドレスを dcmd 名の前に指定すると、指定した CPU の情報だけが表示されます。-v オプションを指定すると、::cpuinfo は、各 CPU 上で実行されるまで待機している実行可能スレッドとアクティブ割り込みスレッドも表示します。

> 0::cpuinfo -v ID ADDR FLG NRUN BSPL PRI RNRN KRNRN SWITCH THREAD PROC 0 0000180c000 1b 8 0 59 no no t-1 30003b515e0 mdb | | RUNNING <--+ +--> PRI THREAD PROC READY 59 3000192e1a0 java EXISTS 59 30004832400 java ENABLE 59 30001998a20 java 59 30004962a60 java 59 30004963aa0 java 59 30004b087c0 java 59 300020d3b60 sshd 34 300020d2b20 java


[ address ] ::cpupart [-v]

CPU partition の情報を表示します。

> ::cpupart ID ADDR NRUN #CPU CPUS 0 fffffffffbc8b580 0 4 0-3


[ address ] ::gcpu_poll_trace

poll trace buffer を表示します。

> fffffffffc0a7410::gcpu_poll_trace ADDR WHEN WHAT NERR fffffffffc0a7410 6e0000 ntv-cyc-poll 11

※アドレスが不明

[ address ] ::lgrp [-q] [-p | -Pih]

lgroup (近傍性グループ) を表示します。

> ::lgrp LGRPID ADDR PARENT PLATHAND #CPU CPUS 0 1898c88 0 DEFAULT 8 0-7 > ::lgrp -p LGRPID PSRSETID LOAD #CPU CPUS 0 0 8917 8 0-7


walker

cpu

カーネル CPU 構造体のセットに対して反復適用します。cpu_t 構造体は、<sys/cpuvar.h> で定義されます。

> ::walk cpu |::print cpu_t cpu_thread cpu_thread = 0x2a10001fc60 cpu_thread = 0x2a100fbfc60 cpu_thread = 0x2a10104dc60 cpu_thread = 0x2a1010e9c60 cpu_thread = 0x2a101169c60 cpu_thread = 0x2a1011e9c60 cpu_thread = 0x2a101299c60 cpu_thread = 0x2a1012e9c60

 

cpu_dispq

cpu_t 構造体を指定して、ディスパッチャーキューのスレッドに対して反復適用します。

> 0000180c000::walk cpu_dispq |::threadlist -v ADDR PROC LWP CLS PRI WCHAN 000002a1005ffc60 18a62c0 0 0 60 0 PC: cv_timedwait_hires+0xa4 TASKQ: system_taskq stack pointer for thread 2a1005ffc60: 2a1005ff021 [ 000002a1005ff021 cv_timedwait_hires+0xa4() ] taskq_thread_wait+0x54() taskq_d_thread+0x178() thread_start+4()


cpupart_cpulist

cpupart_t 構造体を指定して、パーティションの中の cpu に対して反復適用します

> ::walk cpupart_walk |::walk cpupart_cpulist |::print cpu_t cpu_thread |::threadlist ADDR PROC LWP CMD/LWPID 000002a10001fc60 18a62c0 0 idle() 000002a100fbfc60 18a62c0 0 idle() 000002a10104dc60 18a62c0 0 idle() 000002a1010e9c60 18a62c0 0 idle() 000002a101169c60 18a62c0 0 idle() 000002a1011e9c60 18a62c0 0 idle() 000002a101299c60 18a62c0 0 unix`thread_create_intr() 000002a1012e9c60 18a62c0 0 idle()

 

cpupart_walk

cpu パーティションのセットに対して反復適用します

> ::walk cpupart_walk |::print cpupart_t cp_kp_queue cp_kp_queue = { cp_kp_queue.disp_lock = 0 cp_kp_queue.disp_npri = 0x6e cp_kp_queue.disp_q = 0x30002c05540 cp_kp_queue.disp_q_limit = 0x30002c05f90 cp_kp_queue.disp_qactmap = 0x300024f23e0 cp_kp_queue.disp_maxrunpri = 0xffff cp_kp_queue.disp_max_unbound_pri = 0xffff cp_kp_queue.disp_nrunnable = 0 cp_kp_queue.disp_cpu = 0 cp_kp_queue.disp_steal = 0 }

 

cmihdl

cpu モジュールインターフェイスを列挙します

> ::walk cmihdl |::cmihdl HANDLE REF CPU CH/CR/ST CMT MC MODULE MODEL-SPECIFIC ---------------- --- --- -------- --- -- ------------- ------------------------ ffffc100005dc380 3 0 0/0/0 S N cpu.generic cpu_ms.GenuineIntel ffffc100038ef400 3 1 1/0/0 S N cpu.generic cpu_ms.GenuineIntel


cpc_ctx

global list の cpc コンテキストに反復適用します

> ::walk cpc_ctx |::cpc N PIC NDX VAL FLG PRESET CFG EVENT -------------------------------------------------------------------------------- 0 0 0 3f0fa7 OUS 0 30008d5ead0 PAPI_fp_ins 1 1 1 80000014a OUS 0 30008d5eac0 PAPI_tot_ins -------------------------------------------------------------------------------- 0 0 0 53a772 OUS 0 30008d5eb00 PAPI_fp_ins 1 1 1 b000000ca OUS 0 30008d5eaf0 PAPI_tot_ins -------------------------------------------------------------------------------- 0 0 0 7e598e OUS 0 30008d5eb30 PAPI_fp_ins 1 1 1 4000000d4 OUS 0 30008d5eb20 PAPI_tot_ins : :


gcpu_poll_trace

poll trace buffers in reverse chronological order

Read more ...

Drupal 7 の CKEditor を設定する

2013/07/27
DrupalのWysiwygエディタといえばCKEditor。モジュールは、WysiwygCKEditorがあるが、Fedoraならyumでサクッと入るのでCKEditorを使用する。手動でもtarを展開するだけで入る。
# yum install drupal7-ckeditor CKEditor本体のckeditor.noarchも依存で入る。いつものようにモジュールを有効にして設定。

ホーム › 管理 › 環境設定 › コンテンツ作成 > CKEditor (admin/config/content/ckeditor)
ckediter02
ckediter03

上記で、テキストフォーマットとプロフィール(CKEditorの設定)をバインドする。プロフィールは追加できるので、必要ならテキストフォーマット毎にCKEditorの設定が可能。
ここまででこんな感じ。
ckediter01

画像をftpなどでアップロードするのは不便なので、IMCEを入れる。もうわざわざ説明するまでもないので、サクッと設定しちゃって下さい。
ckediter06

コンテンツを作成する際、細かい所はソース(HTML)を編集して調整するので、CKEditerのプラグインCodeMirrorを入れてSyntax Highlightさせる。
CKEditorをyumで入れた場合は、/usr/share/drupal7/modules/ckeditorに入っているので、その下の/usr/share/drupal7/modules/ckeditor/pluginsにダウンロードしたzipを展開する。/usr/share/drupal7/modules/ckeditor/ckeditor/pluginsではないので注意する。
先ほどのCKEditorの設定のEditor appearanceの項目で、プラグインを有効にする。
ckediter04

ソースがHighlightするようになった。
ckediter05

コンテンツもHighlightさせたいのでSyntax Highlighterを入れる。Syntaxhighlighter本体も入れないと、プラグインが有効にならないので注意する。ちなみに本体は/usr/share/drupal7/sites/all/librariesに入れる。
次にSyntaxhighlighterのタグを挿入するSyntaxhighlighter InterfaceプラグインをCKEditerに入れる。展開すると、奥の方にplugins/syntaxhighlightがあるので、例によって/usr/share/drupal7/modules/ckeditor/pluginsの下に移動して、先ほどと同じようにプラグインを有効にする。
ckediter07

すると、Syntaxhighlighterのタグを挿入するボタンが出現・・・しない!
というわけで、/usr/share/drupal7/modules/ckeditor/plugins/syntaxhighlight/plugin.jsに、下記のようにiconのプロパティを追加する。下のほうに同じ行があるのでコピペってやればよい。
editor.ui.addButton && editor.ui.addButton( 'Syntaxhighlight', { label : editor.lang.syntaxhighlight.title, command : 'syntaxhighlightDialog', toolbar : 'insert,98' icon: this.path + 'icons/syntaxhighlight.png', } );
アイコンが出てきたので、toolbarに追加する。
ckediter08

CKEditerを起動してボタンを押すと、下記のダイアログがポップアップする。
ckediter09

保存すれば、Syntax Highlightされたコンテンツが表示される。
ckediter10
Read more ...