2024-07-23 05:50:35 +00:00
|
|
|
;; File: bio.inc
|
|
|
|
;; Buffer cache
|
|
|
|
|
|
|
|
;; Struc: Buffer
|
|
|
|
struc Buffer {
|
|
|
|
.dev dd ?
|
|
|
|
.block dd ?
|
|
|
|
.ulock dd ?
|
|
|
|
.refcount dd ?
|
|
|
|
.data db 512 dup(?)
|
|
|
|
}
|
|
|
|
DEFN Buffer
|
|
|
|
|
|
|
|
;; Function: bio_init
|
|
|
|
bio_init:
|
|
|
|
mov ecx, sizeof.Buffer * 30
|
|
|
|
xor ax, ax
|
|
|
|
mov edi, aBuffers
|
|
|
|
rep stosb
|
|
|
|
ret
|
|
|
|
|
2024-07-22 15:32:12 +00:00
|
|
|
;; Function: bio_read
|
|
|
|
;;
|
|
|
|
bio_bread:
|
2024-07-23 05:50:35 +00:00
|
|
|
mov eax, uBIOLock
|
|
|
|
call lock_acquire
|
|
|
|
|
|
|
|
mov eax, uBIOLock
|
|
|
|
call lock_release
|
|
|
|
ret
|
|
|
|
|
2024-07-22 15:32:12 +00:00
|
|
|
;; Function: bio_brelse
|
|
|
|
;; Unbusy a buffer and release it to the free lists.
|
2024-07-23 05:50:35 +00:00
|
|
|
bio_brelse:
|
2024-07-22 15:32:12 +00:00
|
|
|
mov eax, uBIOLock
|
|
|
|
call lock_acquire
|
|
|
|
|
|
|
|
mov eax, uBIOLock
|
|
|
|
call lock_release
|
2024-07-23 05:50:35 +00:00
|
|
|
ret
|
|
|
|
|
|
|
|
uBIOLock dd 0
|