int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
{ struct vm_area_struct *vma; struct mm_struct *mm = current->mm; unsignedlong vdso_base, vdso_len; int ret; staticstruct vm_special_mapping vdso_mapping = {
.name = "[vdso]",
};
vdso_len = vdso_pages << PAGE_SHIFT;
mmap_write_lock(mm);
vdso_base = get_unmapped_area(NULL, 0, vdso_len, 0, 0); if (IS_ERR_VALUE(vdso_base)) {
ret = vdso_base; goto end;
}
/* * Put vDSO base into mm struct. We need to do this before calling * install_special_mapping or the perf counter mmap tracking code * will fail to recognise it as a vDSO (since arch_vma_name fails).
*/
mm->context.vdso = (void *)vdso_base;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.