110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** 210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @file op_config.c 310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Oprofile configuration parameters. 410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Copyright 2002 OProfile authors 610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Read the file COPYING 710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author Nathan Tallent 910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @Modifications Daniel Hansel 1010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */ 1110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 1210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include "op_config.h" 1310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include "op_config_24.h" 1410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 1510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <limits.h> 1610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <stdlib.h> 1710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <stdio.h> 1810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <string.h> 1910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <assert.h> 2010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 2110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/* paths in op_config.h */ 2210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar op_session_dir[PATH_MAX]; 2310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar op_samples_dir[PATH_MAX]; 2410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar op_samples_current_dir[PATH_MAX]; 2510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar op_lock_file[PATH_MAX]; 2610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar op_log_file[PATH_MAX]; 2710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar op_pipe_file[PATH_MAX]; 2810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar op_dump_status[PATH_MAX]; 2910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 3010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/* paths in op_config_24.h */ 3110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar op_device[PATH_MAX]; 3210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar op_note_device[PATH_MAX]; 3310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar op_hash_device[PATH_MAX]; 3410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 3510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectvoid 3610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectinit_op_config_dirs(char const * session_dir) 3710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project{ 3810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project int session_dir_len; 3910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 4010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project assert(session_dir); 4110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project session_dir_len = strlen(session_dir); 4210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 4310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project if (session_dir_len + strlen("/samples/oprofiled.log") > PATH_MAX) { 4410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project fprintf(stderr, "Session_dir string \"%s\" is too large.\n", 4510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project session_dir); 4610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project exit(EXIT_FAILURE); 4710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project } 4810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 4910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcpy(op_session_dir, session_dir); 5010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 5110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcpy(op_samples_dir, op_session_dir); 5210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcat(op_samples_dir, "/samples/"); 5310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 5410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcpy(op_samples_current_dir, op_samples_dir); 5510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcat(op_samples_current_dir, "/current/"); 5610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 5710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcpy(op_lock_file, op_session_dir); 5810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcat(op_lock_file, "/lock"); 5910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 6010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcpy(op_pipe_file, op_session_dir); 6110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcat(op_pipe_file, "/opd_pipe"); 6210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 6310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcpy(op_log_file, op_samples_dir); 6410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcat(op_log_file, "oprofiled.log"); 6510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 6610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcpy(op_dump_status, op_session_dir); 6710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcat(op_dump_status, "/complete_dump"); 6810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 6910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcpy(op_device, op_session_dir); 7010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcat(op_device, "/opdev"); 7110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 7210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcpy(op_note_device, op_session_dir); 7310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcat(op_note_device, "/opnotedev"); 7410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 7510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcpy(op_hash_device, op_session_dir); 7610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project strcat(op_hash_device, "/ophashmapdev"); 7710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project} 78