---
# System prepended metadata

title: Linux Project1 Write Up---第4組

---

# Linux Project1 Write Up---第4組

##### 107201021 易瑋泓
##### 107201019 陳宇揚
##### 107201023 蔡沐霖


## Question_1:為甚麼一定要用asmlinkage
`asmlinkage`是一個`gcc`標籤，函式定義前面加上這個標籤，表示此函式會從`stack`中抓取參數而不是暫存器。
`system call handler`是機器語言，而`system call routine`是`C` 語言，當機器語言呼叫`C`語言時，並且將參數傳到`stack`中時，在`c`函式的`prototype`前就要用到`asmlinkage`，這樣才能符合引數傳遞規則。




## Question_2:syscall_define展開內容
![](https://i.imgur.com/IMBkFyV.png)
它裡面做的事情，主要就是將系統調用的參數統一變成使用`long`的形式來接收，再強轉轉爲`int`的形式，這樣做的原因是為了規避掉之前`64位元Linux`存在的`CVE-2009-2009`漏洞，也就是在將`32位元`的參數送到`64位元`時必須要自行擴展，容易出錯，所以才做了將調用參數統一使用`long`的形式來接收，再強轉為相應參數這樣一件事情。

## Question_3:include裡面的library放在哪個架構
藉由vm_area_struct 可以呈現線性的記憶體且存放共用資料庫