ဟာ Linux စစ်ဌာနချုပ် Learn - ioctl

အမည်

ioctl - ထိန်းချုပ်မှု device ကို

အနှစ်ချုပ်

#include

int ioctl (int ဃ, int တောင်းဆိုမှုကို ... );

ဖေါ်ပြချက်

အဆိုပါ ioctl function ကိုအထူးဖိုင်တွေရဲ့အခြေခံ device ကို parameters များကိုတွက်ချက်။ အထူးသဖြင့်, အကျင့်စာရိတ္တအထူးဖိုင်တွေ (ဥပမာဆိပ်ကမ်း) ၏များစွာသောလုပ်ငန်းလည်ပတ်ဝိသေသလက္ခဏာများ ioctl တောင်းဆိုမှုများနှင့်အတူထိန်းချုပ်နိုင်ပါသည်။ အဆိုပါအငြင်းအခုံဃအနေနဲ့ပွင့်လင်းဖိုင် descriptor ကိုဖြစ်ရပါမည်။

ဒုတိယအငြင်းအခုံကိရိယာ-မှီခိုတောင်းဆိုမှုကိုကုဒ်ဖြစ်ပါတယ်။ တတိယအငြင်းအခုံမှတ်ဉာဏ်တစ်ခု untyped pointer ဖြစ်ပါတယ်။ ဒါဟာ (ပျက်ပြယ် * ခိုင်လုံသောကို C ဖြစ်ခဲ့သည်မီရက်မှ) argp * အစဉ်အလာ char င်, ဒါကြောင့်ဒီဆွေးနွေးမှုများအတွက်အမည်ရှိလိမ့်မည်။

တစ်ဦး ioctl တောင်းဆိုချက်သည်ငြင်းခုံတစ်ခု parameter သည်အတွက်သို့မဟုတ်အထဲက parameter သည်ရှိမရှိအထဲတွင် encoded နှင့် bytes အတွက်အငြင်းအခုံ argp ၏အရွယ်အစားသိရသည်။ တစ်ဦး ioctl တောင်းဆိုမှုကိုသတ်မှတ်ခြင်းမှာအသုံးပြုတဲ့ macro နှင့်ပုံစံလုပ်ရန် ဖိုင်တွင်တည်ရှိပါသည်။

သို့ပြန်သွားသည် Value ကို

အများအားဖြင့်, အောင်မြင်မှုသုညပေါ်ပြန်ရောက်သည်။ အနည်းငယ် ioctls တစ်ခု output ကို parameter သည်အတိုင်းပြန်လာတန်ဖိုးကိုသုံးပါနှင့်အောင်မြင်မှုအပေါ်တစ်ဦး nonnegative တန်ဖိုးကိုပြန်သွားပါ။ အမှားတွင်, -1 ပြန်ရောက်သည်နှင့် errno သင့်လျော်စွာသတ်မှတ်ထားခြင်းဖြစ်သည်။

မှားယွင်းမှုများ

EBADF

ဃခိုင်လုံသော descriptor ကိုမဟုတ်ပါဘူး။

EFAULT

argp အနေနဲ့လက်လှမ်းမမှီမှတ်ဉာဏ်ဧရိယာအားကိုးကား။

ENOTTY

ဃတစ်ဇာတ်ကောင်အထူးစက်ကိရိယာနှင့်ဆက်စပ်ခြင်းမရှိပါ။

ENOTTY

သတ်မှတ်ထားသောတောင်းဆိုမှုကိုသော descriptor ကိုဃကိုးကားအရာဝတ္ထုများ၏ကြင်နာဖို့လျှောက်ထားမထားဘူး။

EINVAL

တောင်းဆိုခြင်းသို့မဟုတ် argp တရားဝင်မဟုတ်ပါဘူး။

ဘက်ဘက်ကလိုက်လျောညီထွေ

အဘယ်သူမျှမတစ်ခုတည်းသောစံ။ အငြင်းပွားမှုများ, ပြန်နှင့် ioctl ၏ semantic (2) ဆိုတဲ့မေးခွန်းကိုအတွက် device driver ဟာ (ခေါ်ဆိုမှုတစ်ဦးဖမ်း-အားလုံးစစ်ဆင်ရေးများအတွက်သန့်ရှင်းမှုအတွက် fit မအဖြစ်အသုံးပြုသည်နှင့်အညီကွဲပြား Unix စီး I / O မော်ဒယ်) ။ ကြည့်ရှုပါ ioctl_list ပုသိ ioctl ဖုန်းခေါ်ဆိုမှုများစွာကိုများစာရင်းကိုအဘို့ (2) ။ အဆိုပါ ioctl function ကိုဖုန်းခေါ်ဆိုမှုဗားရှင်း 7 ကို AT & T က Unix ထဲမှာထင်ရှား။ ,