Мой оригинальный ответ ниже, что частично верно.
Я взял на себя смелость связаться с авторами в Массачусетском технологическом институте и получил следующий ответ:
Код во второй половине if
обернул системный вызов в begin_trans/commit_trans
. Позже мы переместили начало/завершение транзакции глубже в отдельные системные вызовы, но забыли исправить syscall()
.
Таким образом, эти две части были разными, и когда они были заменены на одинаковые, модификация просто не объединила два бита вместе.
Нет, эти два бита кода эквивалентны.
Возможно, в какой-то момент вызовы syscalls[?]()
как-то отличались либо параметрами, либо местами возврата, но сейчас это не так.
Там также мог быть какой-то пробел, что может быть подтверждено тем фактом, что в строке 3115 есть пустая строка:
// System call numbers
#define SYS_fork 1
#define SYS_exit 2
#define SYS_wait 3
#define SYS_pipe 4
#define SYS_read 5
#define SYS_kill 6
#define SYS_exec 7
#define SYS_fstat 8
#define SYS_chdir 9
#define SYS_dup 10
#define SYS_getpid 11
#define SYS_sbrk 12
#define SYS_sleep 13
#define SYS_uptime 14
#define SYS_open 15
#define SYS_write 16
#define SYS_mknod 17
#define SYS_unlink 18
#define SYS_link 19
#define SYS_mkdir 20
#define SYS_close 21
Это все содержимое syscalls.h
, и пустая строка выглядит несколько подозрительно.
Очевидной функциональной группировки нет — хотя все 15 и выше, по-видимому, связаны с манипулированием файловой системой, SYS_read
и SYS_fstat
находятся в первой группе.
Возможно, вам следует связаться с авторами, чтобы спросить их (6.828-staff at pdos.csail.mit.edu
).
Я знаю (так как у меня есть книга), что он не перенесен из кода эпохи львов, поскольку в нем нет таких пробелов в списке — они также в другом порядке, с чтением и записью рядом друг с другом для пример.
person
paxdiablo
schedule
20.01.2012
if
, вероятно, когда-то были разными, но позже изменились. Есть ли какой-то журнал изменений, который вы можете проверить для файла (например, журнал CVS/SVN/GIT?). В противном случае вы должны спросить разработчиков. - person Some programmer dude   schedule 20.01.2012