vvar.h에서 새 변수를 선언하는 방법 Linux에서 vdso 만들기 |

vvar.h에서 새 변수를 선언하는 방법 Linux에서 vdso 만들기 |

vvar.h근처에 새로운 VDSO 함수를 선언하고 정의하려고 합니다. 이렇게 하면 vdso 함수에서 이 변수를 사용할 수 있습니다.

VVar에 관해 질문이 있습니다. 의 설명에 따르면 arch/x86/include/asm/vvar.h여기서 새 변수를 선언할 때 이 변수를 다른 곳에서 정의 DECLARE_VVAR(0, int, count)해야 합니다 .DEFINE_VVAR(type, name)

문제는 이 변수를 다른 곳에서 정의한 후 DEFINE_VVAR(int, count)이 변수에 정수 값을 할당하려고 하면 count실패한다는 것입니다. 이는 버전 5.2 이후로 커널이 #define DEFINE_VVAR(type, name)변경되었기 때문입니다 . 이 변수는 이제 정수 유형이 아닌 정수 배열입니다. 따라서 정수 값을 할당할 수 없습니다. 문제를 해결하는 방법을 알고 있나요?#define DEFINE_VVAR(type, name) type name#define DEFINE_VVAR(type, name) type name[CS_BASES]count

VVAR.h:https://elixir.bootlin.com/linux/v5.12/source/arch/x86/include/asm/vvar.h#L43

답변1

DECLARE_VVARDEFINE_VVAR아키텍처별 vDSO 구현 세부 정보이므로 새 vDSO 데이터를 추가하는 데 사용해서는 안 됩니다.

vDSO 변수를 추가하려면 수정해야 합니다.struct vdso_data include/vdso/datapage.h(여기서 배열 구성의 종속성을 볼 수 있습니다. 이는 클럭 소스와 관련되어 있으므로 참조 CS_BASES) 또는 아키텍처와 관련된 경우 관련 include/asm/vdso/data.h파일(현재s390은 이러한 파일에 아키텍처별 vDSO 데이터를 포함하는 유일한 아키텍처입니다.;다른 아키텍처에는 다른 접근 방식이 있습니다.하나의 PowerPC).

관련 정보