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