programing

'asmlinkage' 수식어의 의미는 무엇입니까?

copyandpastes 2022. 7. 30. 21:09
반응형

'asmlinkage' 수식어의 의미는 무엇입니까?

Linux에서 시스템 호출을 구현하는 기능에 사용되는 것으로 알고 있습니다.예를 들어 다음과 같습니다.

asmlinkage long sys_getjiffies( void )
{
  return (long)get_jiffies_64();
}

컴파일러에 스택 상의 모든 함수 인수를 전달하도록 지시합니다.하지만 이미 그렇지 않나요?함수 인수는 일반적으로 스택에만 푸시함으로써 전달됩니다.아니면 여기서 레지스터를 통해 함수 인수를 전달하는 것을 언급하고 있는 것입니까?

FAQ가 있습니다.

asmlinkage 태그는 이 단순한 기능에 대해 주의해야 할 또 다른 사항입니다.이것은 일부 gcc 매직의 #define으로, 함수가 레지스터(일반 최적화)에서 인수를 찾을 것으로 예상하지 않고 CPU 스택에서만 찾을 수 있음을 컴파일러에 알려줍니다.system_call이 첫 번째 인수인 시스템콜 번호를 소비하고 실제 시스템콜에 전달되는 인수를 최대 4개까지 더 허용한다는 이전 주장을 상기시켜 주십시오.system_call은 단순히 다른 인수(레지스터에 전달된 인수)를 스택에 남겨두는 것만으로 이 작업을 수행할 수 있습니다.모든 시스템콜에는 asmlinkage 태그가 붙어 있기 때문에 모든 콜은 스택에서 인수를 찾습니다.물론입니다.sys_ni_syscall의 경우, 이것은 아무런 차이가 없습니다. 왜냐하면sys_ni_syscall는 인수를 받지 않지만 다른 대부분의 시스템콜에서는 문제가 됩니다그리고, 네가 보게 될 것이기 때문이다.asmlinkage다른 많은 기능들 앞에서 무슨 내용인지 알아야 할 것 같아서

어셈블리 파일에서 함수를 호출할 수도 있습니다.

언급URL : https://stackoverflow.com/questions/10459688/what-is-the-asmlinkage-modifier-meant-for

반응형