MCPcopy Create free account
hub / github.com/dmtcp/dmtcp / TLSInfo_GetThreadSysinfo

Function TLSInfo_GetThreadSysinfo

src/tls.cpp:461–480  ·  view source on GitHub ↗

AT_SYSINFO is what kernel calls sysenter address in vdso segment. Kernel saves it for each thread in %gs:SYSINFO_OFFSET ?? as part of kernel TCB (thread control block) at beginning of TLS ??

Source from the content-addressed store, hash-verified

459// Kernel saves it for each thread in %gs:SYSINFO_OFFSET ??
460// as part of kernel TCB (thread control block) at beginning of TLS ??
461void *
462TLSInfo_GetThreadSysinfo()
463{
464 void *sysinfo;
465
466#if defined(__i386__) || defined(__x86_64__)
467 asm volatile (CLEAN_FOR_64_BIT(mov %%gs:) DEFAULT_SYSINFO_OFFSET ", %0\n\t"
468 : "=r" (sysinfo));
469#elif defined(__arm__)
470 asm volatile ("mrc p15, 0, %0, c13, c0, 3 @ load_tp_hard\n\t"
471 : "=r" (sysinfo));
472#elif defined(__aarch64__)
473 asm volatile ("mrs %0, tpidr_el0" : "=r" (sysinfo));
474#elif defined(__riscv)
475 asm volatile ("addi %0, tp, 0" : "=r" (sysinfo));
476#else /* if defined(__i386__) || defined(__x86_64__) */
477# error "current architecture not supported"
478#endif /* if defined(__i386__) || defined(__x86_64__) */
479 return sysinfo;
480}
481
482void
483TLSInfo_SetThreadSysinfo(void *sysinfo)

Callers 1

writeCkptMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected