mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 08:26:14 +00:00
62 lines
1.6 KiB
C
62 lines
1.6 KiB
C
// Small test program to demonstrate Valgrind bug.
|
|
// https://bugs.kde.org/show_bug.cgi?id=254164
|
|
|
|
|
|
#include <stdio.h>
|
|
#include <sys/resource.h>
|
|
|
|
#include <unistd.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#include <sys/sysctl.h>
|
|
#include <mach/task.h>
|
|
#include <mach/mach_init.h>
|
|
|
|
void getres(task_t task, unsigned int *rss, unsigned int *vs)
|
|
{
|
|
struct task_basic_info t_info;
|
|
mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT;
|
|
|
|
task_info(task, TASK_BASIC_INFO, (task_info_t)&t_info, &t_info_count);
|
|
*rss = t_info.resident_size;
|
|
*vs = t_info.virtual_size;
|
|
}
|
|
|
|
/** It appears task_set_info() is a deprecated interface on modern Darwin
|
|
* Per comments in osfmk/kern/task.c:
|
|
*
|
|
* This routine was added, pretty much exclusively, for registering the
|
|
* RPC glue vector for in-kernel short circuited tasks. Rather than
|
|
* removing it completely, I have only disabled that feature (which was
|
|
* the only feature at the time).
|
|
*/
|
|
/**
|
|
void setres(task_t task)
|
|
{
|
|
struct task_trace_memory_info t_info;
|
|
mach_msg_type_number_t t_info_count = TASK_TRACE_MEMORY_INFO_COUNT;
|
|
|
|
t_info.user_memory_address = NULL;
|
|
t_info.buffer_size = 0;
|
|
t_info.mailbox_array_size = 0;
|
|
|
|
task_set_info(task, TASK_TRACE_MEMORY_INFO, (task_info_t)&t_info, &t_info_count);
|
|
}
|
|
*/
|
|
|
|
int main(void)
|
|
{
|
|
unsigned int rss, vs;
|
|
task_t task = MACH_PORT_NULL;
|
|
|
|
if (task_for_pid(current_task(), getpid(), &task) != KERN_SUCCESS)
|
|
abort();
|
|
|
|
getres(task, &rss, &vs);
|
|
//setres(task);
|
|
|
|
return 0;
|
|
}
|
|
|