1Chinese translated version of Documentation/io_orderings.txt 2 3If you have any comment or update to the content, please contact the 4original document maintainer directly. However, if you have a problem 5communicating in English you can also ask the Chinese maintainer for 6help. Contact the Chinese maintainer if this translation is outdated 7or if there is a problem with the translation. 8 9Chinese maintainer: Lin Yongting <linyongting@gmail.com> 10--------------------------------------------------------------------- 11Documentation/io_ordering.txt ��������������� 12 13������������������������������������������������������������������������������������������������������ 14������������������������������������������������������������������������������������������������������ 15������������������������������������������������ 16 17��������������������� ��������� Lin Yongting <linyongting@gmail.com> 18��������������������� ��������� Lin Yongting <linyongting@gmail.com> 19��������������������� ��������� Lin Yongting <linyongting@gmail.com> 20 21 22��������������� 23--------------------------------------------------------------------- 24 25������������������������������������������I/O������������������������������������������������������������ 26������I/O��������������������������������������������������������������������������������������������������� 27���������������������������������������IO��������������������������������������������������������������������� 28���������������������������������������������spinlock��������������������������������������������������� 29��������������������������������������������������������������������������������������������������������� 30���������������mb()���������������������I/O������ 31 32��������������������������������������������� 33 34 ... 35CPU A: spin_lock_irqsave(&dev_lock, flags) 36CPU A: val = readl(my_status); 37CPU A: ... 38CPU A: writel(newval, ring_ptr); 39CPU A: spin_unlock_irqrestore(&dev_lock, flags) 40 ... 41CPU B: spin_lock_irqsave(&dev_lock, flags) 42CPU B: val = readl(my_status); 43CPU B: ... 44CPU B: writel(newval2, ring_ptr); 45CPU B: spin_unlock_irqrestore(&dev_lock, flags) 46 ... 47 48���������������������������������������������newval2������������������������newval������������������ 49��������������������������������������������������������� 50 51 ... 52CPU A: spin_lock_irqsave(&dev_lock, flags) 53CPU A: val = readl(my_status); 54CPU A: ... 55CPU A: writel(newval, ring_ptr); 56CPU A: (void)readl(safe_register); /* ������������������*/ 57CPU A: spin_unlock_irqrestore(&dev_lock, flags) 58 ... 59CPU B: spin_lock_irqsave(&dev_lock, flags) 60CPU B: val = readl(my_status); 61CPU B: ... 62CPU B: writel(newval2, ring_ptr); 63CPU B: (void)readl(safe_register); /* ������������������*/ 64CPU B: spin_unlock_irqrestore(&dev_lock, flags) 65 66���������������������������safe_register������������������IO������������������������������������ 67������������������������������������������������������������������ 68