#ifndef _PERF_PERF_H #define _PERF_PERF_H #include #include #include #include extern bool test_attr__enabled; void test_attr__init(void); void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu, int fd, int group_fd, unsigned long flags); #define HAVE_ATTR_TEST #include "perf-sys.h" static inline unsigned long long rdclock(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); return ts.tv_sec * 1000000000ULL + ts.tv_nsec; } #define MAX_NR_CPUS 1024 extern const char *input_name; extern bool perf_host, perf_guest; extern const char perf_version_string[]; void pthread__unblock_sigwinch(void); #include "util/target.h" struct record_opts { struct target target; bool group; bool inherit_stat; bool no_buffering; bool no_inherit; bool no_inherit_set; bool no_samples; bool raw_samples; bool sample_address; bool sample_weight; bool sample_time; bool sample_time_set; bool sample_cpu; bool period; bool running_time; bool full_auxtrace; bool auxtrace_snapshot_mode; bool record_switch_events; bool all_kernel; bool all_user; bool tail_synthesize; bool overwrite; bool ignore_missing_thread; unsigned int freq; unsigned int mmap_pages; unsigned int auxtrace_mmap_pages; unsigned int user_freq; u64 branch_stack; u64 sample_intr_regs; u64 default_interval; u64 user_interval; size_t auxtrace_snapshot_size; const char *auxtrace_snapshot_opts; bool sample_transaction; unsigned initial_delay; bool use_clockid; clockid_t clockid; unsigned int proc_map_timeout; }; struct option; extern const char * const *record_usage; extern struct option *record_options; #endif s/usb/gadget/function/u_ncm.h?id=54791b276b4000b307339f269d3bf7db877d536f'>treecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2017-01-30 14:28:22 -0800
committerDavid S. Miller <davem@davemloft.net>2017-01-30 14:28:22 -0800
commit54791b276b4000b307339f269d3bf7db877d536f (patch)
tree1c2616bd373ce5ea28aac2a53e32f5b5834901ce /drivers/usb/gadget/function/u_ncm.h
parent5d0e7705774dd412a465896d08d59a81a345c1e4 (diff)
parent047487241ff59374fded8c477f21453681f5995c (diff)
Merge branch 'sparc64-non-resumable-user-error-recovery'
Liam R. Howlett says: ==================== sparc64: Recover from userspace non-resumable PIO & MEM errors A non-resumable error from userspace is able to cause a kernel panic or trap loop due to the setup and handling of the queued traps once in the kernel. This patch series addresses both of these issues. The queues are fixed by simply zeroing the memory before use. PIO errors from userspace will result in a SIGBUS being sent to the user process. The MEM errors form userspace will result in a SIGKILL and also cause the offending pages to be claimed so they are no longer used in future tasks. SIGKILL is used to ensure that the process does not try to coredump and result in an attempt to read the memory again from within kernel space. Although there is a HV call to scrub the memory (mem_scrub), there is no easy way to guarantee that the real memory address(es) are not used by other tasks. Clearing the error with mem_scrub would zero the memory and cause the other processes to proceed with bad data. The handling of other non-resumable errors remain unchanged and will cause a panic. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/usb/gadget/function/u_ncm.h')