λãҳ > Ŷ̬ > ˾̬

i.MX6ULLսLinux뾺

ڣ2020-12-11

  • Ŀ¼

    1

    2 غ

    3 ͵


    1

    ԭӲֻܶͱλбǣʵʵʹûôֻͱλô򵥵ٽٸ򵥵ӣ豸ṹͲͱǶڽṹгԱIJҲҪ֤ԭԣ߳ A Խṹʹڼ䣬Ӧýֹ߳ʴ˽ṹЩԭӲʤΣҪҪƣ Linuxںо

    Spin Lockһֵ͵ĶٽԴлʵֶΣԴĹʽΪ˻һijCPUеĴִһԭӲòԲãTest-And- SetijڴԭӲڸò֮ǰִеԪܷڴԽѾУִУԽԱռãһСѭظԲáνġͨ׵˵ǡԭشתijͨøñͷijȴġԲá߱ͷš

    򵥵ķǰΪһñһٽΪҵǰУԵһᡱ߱ΪҵǰУԱʹáAִеԪȽ̣BִеԪͼͬһʱ֪ѱУȵAִеԪͷźܽ롣

    Linux ںʹýṹ spinlock_t ʾṹ嶨ʾ

    ʹ֮ǰ϶Ҫȶһ巽ʾ

    spinlock_t lock; //

    ԺͿʹӦ API

    2 غ

    һʹã

    ҪSMPCPUں˿ռڵCPUں˲֧ռϵͳ˻ΪղڵCPUں˿ռϵͳУڼں˵ռֹں˿ռĵCPUϵͳΪʵϺSMPϵͳˣĵCPUϵͳʹʮֱҪ⣬ڶSMP£κһõúϵռҲʱֹˣûнֹһ˵ռȡ

    Ա֤ٽܱCPUͱCPUڵռ̴ţǵõĴִٽʱ򣬻ܵжϵӰ졣Ϊ˷ֹӰ죬Ҫõжһãغ£

    ̺жϿܷͬһƬٽԴһҪڽе spin_lock_irqsave/spin_unlock_irqrestoreжеspin_lock/spin_unlockʾCPU0ϣǽģжĻ˺CPU1ǽģжģͬһæȴһк˼䲢Ŀԡͬʱÿ˵Ľijʱõspin_lock_irqsaveԸúϵжDzܽģ˺ڲĿԡ

    ʦӦʹʹлҪرע¼⡣

    1ʵæʱCPUһֱѭִСԲáֱöȡøCPUڵȴʱκõĹǵȴˣֻռʱ伫̵£ʹǺġٽܴ󣬻й豸ʱҪϳʱռʹήϵͳܡ

    2ܵϵͳǵݹʹһһѾӵijCPUڶλCPU

    3ڼ䲻ܵÿ̵ȵĺ̻֮copy_from_usercopy_to_userkmallocmsleepȺܵں˵ı

    4ڵ±̵ʱҲӦΪԼCPUǶ˵ģرǿƽ̨ĸ磬ڵCPU£жϺͽܷ̿ͬһٽspin_lock_irqsaveǰȫģжʵspin_lockҲû⣬Ϊspin_lock_irqsaveԱ֤CPUжϷ򲻿ִСǣCPUɶˣspin_lock_irqsaveһ˵жϣһ˾Ϳɲ⡣ˣΣжϷҲӦõspin_lock

    3 ͵

    ĻϻضʹõЩʵõIJ࣬ Linux ںʹãǼ˽һЩ

    ٽڽʲôǶдһͬʡִеԪͬʱȡٽԴҲᱻסʵϣԹԴʱִеԪͬʱȡDzģдrwlockIJдһֱȸСƣˡĸд棬ֻ1д̣ڶ棬ͬʱжִеԪȻдҲͬʱС

    Linux ںʹ rwlock_t ṹʾдṹ嶨£

    дصAPI£

    ˳seqlockǶԶдһŻʹ˳ִеԪᱻдִеԪҲ˵ִеԪдִеԪԱ˳ĹԴдʱȻԼصȴдִеԪддִеԪҲҪȴжִеԪɶȥдǣдִеԪдִеԪ֮ȻǻģдִеԪڽддִеԪֱдִеԪͷ˳

    ˳ԣܶд֮䲻ų⣬ִеԪڶڼ䣬дִеԪѾдôִеԪ¶ȡݣԱȷõġԣ£˿ܷͬܶЧݡ

    Linux ںʹ seqlock_t ṹʾ˳ṹ嶨£

    ˳API

  • ѯ
  • ҷϢ
  • 绰ѯ

  • 01085270716
XML 地图