Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/kernel_private.hfa

    rf558b5f rb808625  
    1616#pragma once
    1717
    18 #if !defined(__cforall_thread__)
    19         #error kernel_private.hfa should only be included in libcfathread source
    20 #endif
    21 
    2218#include "kernel.hfa"
    2319#include "thread.hfa"
     
    2622#include "stats.hfa"
    2723
    28 extern "C" {
    29 #if   defined(CFA_HAVE_LINUX_LIBRSEQ)
    30         #include <rseq/rseq.h>
    31 #elif defined(CFA_HAVE_LINUX_RSEQ_H)
    32         #include <linux/rseq.h>
    33 #else
    34         #ifndef _GNU_SOURCE
    35         #error kernel_private requires gnu_source
    36         #endif
    37         #include <sched.h>
    38 #endif
    39 }
    40 
    4124//-----------------------------------------------------------------------------
    4225// Scheduler
     26
     27
    4328extern "C" {
    4429        void disable_interrupts() OPTIONAL_THREAD;
     
    5439
    5540//-----------------------------------------------------------------------------
    56 // Hardware
    57 
    58 #if   defined(CFA_HAVE_LINUX_LIBRSEQ)
    59         // No data needed
    60 #elif defined(CFA_HAVE_LINUX_RSEQ_H)
    61         extern "Cforall" {
    62                 extern __attribute__((aligned(128))) thread_local volatile struct rseq __cfaabi_rseq;
    63         }
    64 #else
    65         // No data needed
    66 #endif
    67 
    68 static inline int __kernel_getcpu() {
    69         /* paranoid */ verify( ! __preemption_enabled() );
    70 #if   defined(CFA_HAVE_LINUX_LIBRSEQ)
    71         return rseq_current_cpu();
    72 #elif defined(CFA_HAVE_LINUX_RSEQ_H)
    73         int r = __cfaabi_rseq.cpu_id;
    74         /* paranoid */ verify( r >= 0 );
    75         return r;
    76 #else
    77         return sched_getcpu();
    78 #endif
    79 }
    80 
    81 //-----------------------------------------------------------------------------
    8241// Processor
    8342void main(processorCtx_t *);
     
    8544void * __create_pthread( pthread_t *, void * (*)(void *), void * );
    8645void __destroy_pthread( pthread_t pthread, void * stack, void ** retval );
     46
     47
    8748
    8849extern cluster * mainCluster;
Note: See TracChangeset for help on using the changeset viewer.