You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I don't know how to commit issue to the book directly, so come here.
fix argument of example code 'swtch'
In Figure 6.4 of chapter 6, first argument of function swtch is struct context**old. I think it should be struct context *old, because the following code need a memory address of old context, not address of a pointer to the old context.
better clear formula 9.2
In CFS scheduler section of chapter 9, formula 9.2 gives: vruntimei=vruntimei+weight0/weighti·runtimei. But the text didn't describe what weight0 for. This might confusing newbies like me to "process 0's weight".
After searching, it showed weight0 may be the value of "nice 0" into prio_to_weight[40].
In chapter 23 page 10, bold "directory memory access" might be "direct memory access".
In chapter 30, I could hardly find the problems in the broken CV codes but got an irrelevant one ;-( One producer produced loops values and two consumers consumed double. Sorry, professor :-) (just while(1) may be OK)
fix Figure 33.1 code
18 int fd;
19 for (fd = minFD; fd < maxFD; fd++)
20 FD_SET(fd, &readFDs);
21
22 // do the select
23 int rc = select(maxFD+1, &readFDs, NULL, NULL, NULL);
24
25 // check which actually have data using FD_ISSET()
26 int fd;
27 for (fd = minFD; fd < maxFD; fd++)
The first argument of select() is maxFD+1, then the max monitored file descriptor is maxFD, so the two loop conditions should be fd <= maxFD(line 19, 27). And line 26 is redundant.
In chapter 38 page 11, the table shows BLOCKs of 2 bits size, but the text above it shows 4 bits.
Chapter 39. In the middle of page 6, in this spot (“hello”) might be in this spot (“hello\n”).
Page 8 struct { struct spinlock lock;... } ftable;, xv6 source shows that the lock indeed per whole instead of per entry.
Page 24 sidebar, it might be difficult for malicious user to attack the service via a call to rename(), but rather easy via ln command.
Thank you for the excellent book!
The text was updated successfully, but these errors were encountered:
laokz
changed the title
fix argument of example code 'swtch'
Book: a little typos
Jun 5, 2020
I don't know how to commit issue to the book directly, so come here.
In Figure 6.4 of chapter 6, first argument of function
swtch
isstruct context**old
. I think it should bestruct context *old
, because the following code need a memory address of old context, not address of a pointer to the old context.In CFS scheduler section of chapter 9, formula 9.2 gives:
vruntimei=vruntimei+weight0/weighti·runtimei
. But the text didn't describe whatweight0
for. This might confusing newbies like me to "process 0's weight".After searching, it showed
weight0
may be the value of "nice 0" intoprio_to_weight[40]
.In chapter 23 page 10, bold "directory memory access" might be "direct memory access".
In chapter 30, I could hardly find the problems in the broken CV codes but got an irrelevant one ;-( One producer produced
loops
values and two consumers consumed double. Sorry, professor :-) (just while(1) may be OK)fix Figure 33.1 code
The first argument of
select()
ismaxFD+1
, then the max monitored file descriptor ismaxFD
, so the two loop conditions should befd <= maxFD
(line 19, 27). And line 26 is redundant.In chapter 38 page 11, the table shows BLOCKs of 2 bits size, but the text above it shows 4 bits.
Chapter 39. In the middle of page 6,
in this spot (“hello”)
might bein this spot (“hello\n”)
.Page 8
struct { struct spinlock lock;... } ftable;
, xv6 source shows that the lock indeedper whole
instead ofper entry
.Page 24 sidebar, it might be difficult for malicious user to attack the service
via a call to rename()
, but rather easyvia ln command
.Thank you for the excellent book!
The text was updated successfully, but these errors were encountered: