]> Zhao Yanbai Git Server - kernel.git/commitdiff
用semaphore_t定义mutex_t
authoracevest <zhaoyanbai@126.com>
Tue, 6 Jun 2023 01:27:23 +0000 (09:27 +0800)
committeracevest <zhaoyanbai@126.com>
Tue, 6 Jun 2023 01:27:23 +0000 (09:27 +0800)
drivers/ide.h
include/semaphore.h
kernel/task_user.c

index 148d63e161c62c6839b47645d1cf95e250067625..4043c31b5c8f2234f99fd75124dded64c2ee015d 100644 (file)
@@ -180,7 +180,7 @@ typedef struct _ide_pci_controller {
 
     // 提出请求的任务用这个字段互斥地添加请求到request_queue
     // 同时也和disk任务互斥
-    semaphore_t request_mutex;
+    mutex_t request_mutex;
     // 请求队列
     disk_request_queue_t request_queue;
 
index 70d86ec7fec9ac46faa455a144d8cf2cf2340b6a..f76b5d5e8135355e199f2a870e439d340290db28 100644 (file)
@@ -32,6 +32,8 @@ void down(semaphore_t *s);
 // 只会唤醒进程,但不会立即重新调度进程
 void up(semaphore_t *s);
 
+typedef semaphore_t mutex_t;
+
 #define DECLARE_MUTEX(name) semaphore_t name = SEMAPHORE_INITIALIZER(name, 1)
 
 #define INIT_MUTEX(ptr)                      \
@@ -39,5 +41,5 @@ void up(semaphore_t *s);
         (ptr)->cnt = 1;                      \
         INIT_LIST_HEAD(&((ptr)->wait_list)); \
     } while (0)
-void mutex_lock(semaphore_t *);
-void mutex_unlock(semaphore_t *);
+void mutex_lock(mutex_t *);
+void mutex_unlock(mutex_t *);
index d5ec98e194eb4816d58e0e1c7aa67cb49d041bab..75977aaa511fc972a353a0fb2367e3b8c24f6560 100644 (file)
@@ -50,6 +50,12 @@ void __ring3text__ __attribute__((__aligned__(PAGE_SIZE))) ring3_entry() {
             "sysexit_return_address:"
             : "=a"(__sysc_ret__)
             : "a"(SYSC_WAIT), "c"(ring3_entry));
+
+        for (int i = 100000000; i > 0; i--) {
+            for (int j = 1; j > 0; j--) {
+                asm("nop;nop;nop;");
+            }
+        }
     }
 }