只能傳資料指標,不能傳程式指標

2021-05-01 22:32:59 字數 532 閱讀 4835

近期在程式設計中發現,只能向linux的核心空間傳遞乙個資料指標,在使用者空間:

if (ioctl(timerhandle,timer2_iris_task,&taskcontexttemp) <0)

在核心空間:

case timer2_iris_task:

//unsigned long   copy_from_user(void *to, const void __user *from, unsigned long n)

if (copy_from_user ((void*)&taskcontexttemp, arg, sizeof (taskcontexttemp)))

break;

這樣用法是沒有問題的。如果我們傳遞的是乙個程式指標,然後我們試圖通過呼叫這個函式的形式跳轉過去,這樣做是不行的。

我目前沒有想得很清楚,估計是linux的安全策略限制了這種危險的動作吧。程式從核心空間跳到使用者空間,是有點危險。資料都必須通過copy_from_user()或copy_to_user()來傳遞,更不要說程式了,肯定是不允許的。

C語言 函式傳參 傳值 傳指標 傳指標的指標

本文參考這兩篇文章 文章 一 文章二。在學習資料結構中建立單鏈表的時候,疑惑 已經定義了node,用到結構體指標的時候直接用 node就好了,為什麼還要再定義乙個 linklist呢,為什麼傳參的時候又要用linklist l呢?下面我們就來循序漸進,由淺入深來解決問題,這裡舉兩個例子作為比較。首先...

傳值 傳引用 傳指標

收藏 相關概念 c 三種傳遞引數方式 傳引數的值 稱值傳遞,簡稱傳值 傳引數的位址 稱位址傳遞,簡稱為傳址 和引用傳遞 稱為傳引用 相應的函式傳值呼叫,傳址呼叫和傳引用呼叫 形參 實參 函式定義時參數列中的引數稱為形式引數,簡稱形參 函式呼叫時參數列中的引數稱為實際引數,簡稱實參。實參和形參之間的資...

傳值 傳引用 傳指標

相關概念 c 三種傳遞引數方式 傳引數的值 稱值傳遞,簡稱傳值 傳引數的位址 稱位址傳遞,簡稱為傳址 和引用傳遞 稱為傳引用 相應的函式傳值呼叫,傳址呼叫和傳引用呼叫 形參 實參 函式定義時參數列中的引數稱為形式引數,簡稱形參 函式呼叫時參數列中的引數稱為實際引數,簡稱實參。實參和形參之間的資料傳遞...