Skip site navigation (1) Skip section navigation (2)

Site Navigation

������ ��������� ��������� FreeBSD � busdma � SMPng

����������

���� �������

busdma

���������� busdma ��������� ��������� ���������� ��������� �������� �� ��������� ���������� ��� ������������� ����������� ����������� ��� ���������� �������� ������� ������� ��������������� � ���������. ��� ������� ������� �� ��������� ��������� ��� ������ ��������, � ����������� ����������� ����, ��� ������� ����� "������ ��������" �� ����� ���������. ����������� �������� ��� ������������� busdma �������� ���������� ������̣���� ���������, � �� ������� �������� ������ �� �������� ����������, �� ������� busdma. ��� busdma, ������������� �� FreeBSD, ��� �������, ��������� �������� ��������� ���� �����: ��������� ���������� busdma � ������ �� ���� ����������, � �������������� ��������� � ������������� ���� ����������. ����� �� ������� ���������� � ��������� ����� ������� ������� �� ��������� �������� � ��������� ��������� (��������������� �� ����������). ��� ���������� ���� ������ ��������� ���������� ����� ��������� ��������� ���������, � ����� ���������� ������ � �������������� ���������.

INTR_MPSAFE

�������� ������������ ������������ ���� ����������� ���������� ��� ������ ������� bus_setup_intr(). ��������� ����� INTR_MPSAFE ��������� ���� ��������� ���������� ������� �� ����� ţ ��������� ��� ��������� �������� Giant. ��� ���� ������������ ������� ������������������ � SMP-��������.

�������� ����� ������������� ���� ����, ���� ���� ��� �� �������� ��������� ��������������, ���� ������ �� ���������� ���������� �� ���������� � ������ ���������� ������ � ��������. ������� �������� ���������� ��� �������� �������� � ����� ��������� ��������� ���������� ����������, � ����� ������������ ��������� ���������� � ������� ����� (taskqueue) ��� ������ ���������� ���� (kernel thread).

��������� SMPng

�������� ������ ������������ �������� � sx-���������� ��� ������ ����������� �������� ������ � ���������� ��������� �� ����������� ������������� �������. �������� � ���������� ��������� ������ϣ���, ��� ��� ������� ���������� �������� �������������� ����������� ���������� ���������� ��������� �������� � ���� �������� ������� ��������.

��������� p!=a

��������� Intel PAE �������, ����� ��������� � ���������� ������ ����� ������ ������. ��� ������, ��� �������� ������ ���� �������� � �������������� vm_paddr_t ��� bus_addr_t, ��� ������������� � ���, ��� ���������� ������ ����� ���� ������������ ��� ������ void *. ����� ����, ������ �������� � �������� ���������� ����� ������ ����������� � �������������.

�������� ����� ���� �� �������� ������, �� ������������ ����� ����� ������� ��������� � ���� �/��� ������ ����������� ����� ������. ���� "�������������" ���������� ������������, ������� ������� ������� �������� �� ���������� ���������� ������; ��� �� ��������� ������� ������, �� ������������ ����������� � ������������� ��� ��������� ��������� ������������ ������ � ����������� �������� ����������� ���ң�. ���� ������ ����� ������ ���������� ��ߣ��, ��� ���������� ��������� ����������������, �� ����� ���������� �� ����������� ����� Maxime Henrion, ����� ��������, ������� �� �������� ���ң�.

����� ���� ���� �������� � ����������� �� ��������� ������. ��� ����������� ����� ��� �������� ���� ��������� ��� ��������� �� ���������. ��� �����, ����������� � �������� ����������, ��� ���������� ���� ���������� ���������� ���������� �� ������. ��� �������������� ����� ��� �������� ����, ����� ��� ������ ���� ��������� �����������. ��� ����� ����� ��� ���� �������� ���� ���������� ������ � ������.

������ ������������� �� ���������, � ����� �� ����.

�������������� ������� � ������

����� ������� ���������� �������, ��������� � ���� ��������, ����� ����� �����:

  • ���������� ���������� ������� - pae(4)
  • ��������� ����������� DMA, ����������� �� ����������� � ���� - bus_dma(9)
  • �������-��������� ����� ������� ����������� ������ (VM) - pmap(9)
  • ������� ���������� ��������� - rman(9)

��������� �� ��������� ��������

������ ������������� ��������� ���������� ��������� ����������
alpha Andrew Gallatin 10 ������� 2002 ��������� � �������� � ������� ��ߣ��� ����������� ������ ����� ���� ��������.
amd64 Peter Wemm 1 ���� 2003 ��������� �������������� ���������.
ia64 Marcel Moolenaar 10 ������� 2002 ��������� � �������� � ������� ��ߣ��� ����������� ������ ����� ���� ��������.
i386 Sam Leffler 9 ������� 2002 ��������� �������������� ���������.
powerpc Hiten Pandya 15 ������ 2003 ��������� �������������� ���������.
sparc64 Thomas M"ostl 6 ������ 2003 ��������� �������������� ���������.

��������� �� ��������� ������� �����������

������� ������������� ��������� ���������� busdma INTR_MPSAFE ��������� SMPng a!=p ��������� 4.x ���������
if_ar � � �� ������� �� ������� �� ������� �� ������� �� ������� kvtop()
if_bge Bill Paul 13 ������ 2004 ��������� ��������� ��������� ��������� �� ������� �
if_cp Roman Kurakin 24 ���� 2004 ��������� ����������� ����������� �� ������� �� ��������� �
if_cs � � �� ������� �� ������� �� ������� �� ������� �� ������� �
if_ct Roman Kurakin 24 ���� 2004 ��������� ����������� ����������� �� ������� �� ������� �
if_cx Roman Kurakin 24 ���� 2004 ��������� ����������� ����������� �� ������� �� ������� �
if_dc Maxime Henrion 13 ������ 2004 ��������� ��������� ��������� ������� ������������ �� ������� ��� �������� ������������� MTX_RECURSE � ������ MPSAFE
if_de Maxime Henrion 13 ������ 2004 ��������� �� ������� �� ������� �� ������� ��������� �
if_ed � � �� ������� �� ������� �� ������� �� ������� �� ������� kvtop()
if_em Prafulla S. Deuskar 13 ������ 2004 ��������� ��������� ��������� ��������� �� ������� �
if_en Hartmut Brandt 13 ������ 2004 ��������� �� ������� �� ������� ������� ������������ �� ������� ���������� �����������; �ݣ �� �������� ��� INTR_MPSAFE?
if_ep Warner Losh 13 ������ 2004 �� ��������� ��������� ��������� ��������� �� ��������� ������� ������� ��� MTX_RECURSE.
if_ex Warner Losh 13 ������ 2004 �� ��������� �� ������� �� ������� �� ������� �� ��������� ��������� �� �����������.
if_fatm Hartmut Brandt 20 ���� 2004 ��������� ������� ������������ ������� ������������ ������� ������������ �� ��������� �
if_fxp Maxime Henrion 13 ������ 2004 ��������� ��������� ��������� ��������� �� ������� �
if_fwe � � �� ������� �� ������� �� ������� �� ������� �� ������� �
if_gem Thomas M"ostl 6 ������ 2003 ��������� �� ������� �� ������� �� ������� �� ��������� �
if_hatm Hartmut Brandt 20 ���� 2004 ��������� ������� ������������ ������� ������������ ������� ������������ �� ��������� �
if_hme Thomas M"ostl 30 ������ 2005 ��������� ��������� ��������� ��������� �� ��������� �
if_idt � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys()
if_lge � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys()
if_lnc David O'Brien � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys(). ����������, ��� ��������� ����������/������������ ���������� � Poul-Henning Kamp.
if_mn � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys(). ����������, ��� ��������� ����������/������������ ���������� � Poul-Henning Kamp.
if_my � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys()
if_nge � 16 �������� 2004 �� ������� �� ������� ��������� �� ������� �� ������� �� ������� vtophys()
if_pcn David O'Brien 13 ������ 2004 �� ������� �� ������� �� ������� �� ������� �� ������� vtophys(); ���������� �����������; �� �������� ��� INTR_MPSAFE? Mutex ������� ��� MTX_RECURSE.
if_pdq � � �� ������� �� ������� �� ������� �� ������� �� ������� �� ������� ����� ������������ busdma, ����� vtophys()
if_re � � ��������� ��������� ��������� ��������� �� ��������� �
if_rl Bill Paul 13 ������ 2004 ��������� ��������� ��������� �� ������� �� ������� �
if_sf � 13 ������ 2004 �� ������� �� ������� �� ������� �� ������� �� ������� vtophys(); ���������� �����������; �� �������� ��� INTR_MPSAFE? Mutex ������� ��� MTX_RECURSE.
if_sis Bill Paul 13 ������ 2004 ��������� ��������� ��������� �� ������� �� ������� ������� ������� ��� MTX_RECURSE.
if_sk � � �� ������� ��������� ��������� �� ������� �� ������� vtophys()
if_sr � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys()
if_ste � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys()
if_ti � � �� ������� �� ������� �� ������� �� ������� �� ������� �
if_tl � � �� ������� �� ������� �� ������� �� ������� �� ������� �
if_tx Maxime Henrion 19 ������ 2003 ��������� �� ������� �� ������� ������� ������������ �� ������� vtophys()
if_txp Will Andrews 18 ���� 2003 ����������� �� ������� �� ������� �� ������� �� ������� �
if_vr � 23 ������ 2004 �� ������� �� ������� �� ������� �� ������� �� ������� �
if_wb � � �� ������� �� ������� �� ������� �� ������� �� ������� �
if_wi Sam Leffler, Warner Losh 4 ������ 2003 ���������� ��������� ���������� ���������� ���������� �
if_xl Maxime Henrion 13 ������ 2004 ��������� ��������� ��������� ��������� �� ������� �

��������� �� ��������� ��������� ��������

������� ������������� ��������� ���������� busdma INTR_MPSAFE ��������� SMPng a!=p ��������� 4.x ����������
aac Scott Long 31 ������ 2005 ��������� ��������� ��������� ��������� ��������� �� ��������� ������������ ������� ���������� ������ endian
adv � 9 ������� 2002 ��������� �� ������� �� ������� �� ������� �� ������� �
aha � 13 ������ 2004 ��������� ����������� ����������� �� ������� �� ������� ���������� BUSDMA, �� ����� ������ ����� ���� � ������� �����
ahb � 9 ������� 2002 ��������� �� ������� �� ������� �� ������� �� ������� �
ahc Justin T. Gibbs 31 ������ 2005 ��������� �� ������� �� ������� ��������� ��������� �
ahd Justin T. Gibbs 31 ������ 2005 ��������� �� ������� �� ������� ��������� ��������� �
amd � 14 ������� 2002 ��������� �� ������� �� ������� �� ������� �� ������� �
amr Scott Long 30 ������ 2005 ��������� ��������� ��������� ��������� �� ������� �
asr � 4 ������ 2003 �� ������� �� ������� �� ������� �� ������� �� ������� vtophys(). ������� ������� ���������. ���������� ����� ���������� I2O.
ata Soren Schmidt 9 ������� 2002 ��������� ��������� ��������� ��������� �� ������� �
buslogic � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys()
ciss � 9 ������� 2002 ��������� �� ������� �� ������� �� ������� �� ������� �
ct � � �� ������� �� ������� �� ������� �� ������� �� ������� �
dpt � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys()
ida � 9 ������� 2002 ��������� �� ������� �� ������� �� ������� �� ������� �
iir � 30 ������ 2005 ��������� �� ������� �� ������� �� ������� �� ������� ������� ������� ������ ��� ������������� � API busdma.
isp � 8 ������� 2003 ��������� ��������� �� ������� �� ������� �� ������� �
ips Scott Long 30 ������ 2005 ��������� ��������� ��������� ��������� ��������� �
mlx Scott Long 8 ������� 2003 ��������� ����������� ����������� �� ������� �� ������� �
mly Scott Long 8 ������� 2003 ��������� ����������� ����������� �� ������� �� ������� �
mpt � 9 ������� 2002 ��������� ��������� �� ������� �� ������� �� ������� �
ncr � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys(). ����������, ���������� � Poul-Henning Kamp ��� ��������� ����������� �������� ������������.
pst � � �� ������� ��������� �� ������� �� ������� �� ������� vtophys()
stg � 9 ������� 2002 ��������� �� ������� �� ������� �� ������� �� ������� �� ������� ���� �������� ��� ������ ����������.
sym � 19 ������� 2002 ��������� �� ������� �� ������� �� ������� �� ������� �
trm Olivier Houchard 9 ������� 2002 ��������� �� ������� �� ������� �� ������� �� ������� �
twe � 9 ������� 2002 ��������� �� ������� �� ������� �� ������� �� ������� �
wds � 2 ������� 2005 ��������� �� ������� �� ������� �� ������� ��������� �

��������� �� ��������� ������ ���������

������� ������������� ��������� ���������� busdma INTR_MPSAFE ��������� SMPng a!=p ��������� 4.x ����������
agp Olivier Houchard 23 ������ 2003 ����������� �� ������� �� ������� �� ������� �� ������� vtophys()
bktr Olivier Houchard 15 ������ 2003 ����������� �� ������� �� ������� �� ������� �� ������� vtophys()
digi � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys()
drm Eric Anholt 27 ������� 2003 ����������� ��������� ��������� ����������� ����������� vtophys(). ���������� ����� ������� ������������.
fb � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys()
firewire Hidetoshi Shimokawa 17 ������ 2003 ��������� �� ������� �� ������� ��������� �� ������� vtophys()
hfa � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys()
hifn Sam Leffler 13 ������ 2004 ��������� ��������� ��������� �� ������� �� ������� �
musycc � � �� ������� �� ������� �� ������� �� ������� �� ������� vtophys(). ����������, �� �����������/������������� ���������� � Poul-Henning Kamp.
pcm Olivier Houchard 20 ������� 2003 ��������� ��������� �� ������� �� ������� �� ������� �
ubsec Sam Leffler 13 ������ 2004 ��������� ��������� ��������� �� ������� �� ������� vtophys() ���������� ��� ������� printf
usb John-Mark Gurney 24 ���� 2003 ��������� �� ������� �� ������� ������� ������������ �� ������� a!=p ������ ��������, ������ ��������� �������������� ������������

��������� �� ����������������

������ ������������� ��������� ���������� ��������� ����������
���������� �������� �� busdma API Hiten Pandya 15 ������ 2003 ��������� �