2012-04-09 2 views
3

명확히하기 위해 업데이트 됨 :Unix에서 래퍼 함수 인수에 제한이 있습니까?

래퍼 기능은 사용자 모드에서 호출되는 시스템 호출 (커널 모드에서 호출)을 시작하는 함수로 정의됩니다. 예 : open 또는 printf.

래퍼 함수가 얻을 수있는 인수의 수에 제한이 있는지 궁금합니다.

내 견해는 레지스터의 양 때문에 6이되어야한다는 것이지만 확실하지는 않습니다. 나는 그 시스템 호출이 여섯 가지 제한으로 제한된다는 것을 안다. (나는 더 많은 레지스터가 존재하는 32 비트와 64 비트에 대해 이야기하고있다.)

감사

+0

에 관한으로 가고 게시 무엇 당신이 할 수는 "래퍼"기능을합니까? 응용 프로그램에서 커널에 이르는 시스템 호출은 실제로 6 개의 인수 (인수를 전달하기위한 레지스터를 사용하기 때문에 x86 32 비트)로 제한됩니다. –

+1

-1 나는 여기에 좋은 질문이 있다고 생각하지만, 무엇이 요구되는지는 분명하지 않다. 나는 명확히 편집을 격려하기 위해 downvoting 해요. –

+0

@WilliamPursell - 감사합니다. 질문을 업데이트했습니다. 이제 다시 -1 걸릴 수 있습니다 :) – meitalbs

답변

0

래퍼 함수 은 (커널 모드) 시스템 호출에 대한 호출을 개시하는 사용자 모드라는 기능으로 정의된다. 예를 들어, 또는 printf를여십시오. 자신의 정의에

는, 그들이받을 수있는 인수의 수에는 제한없습니다. printf가 즉시 알려야합니다.

을 (그러나이 open 자체가 시스템 호출과 인수의 수에 제한이 있습니다)하지만 시스템에 관해서open처럼 write는 등, 리눅스-86 6 개 인수의 제한이 호출합니다. 이유 및 방법은 Read here입니다.

여기에 또 다른는 SO 깊이이

What are the calling conventions for UNIX & Linux system calls on x86-64

관련 문제