LCOV - code coverage report
Current view: top level - kernel/irq - settings.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 25 51 49.0 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : /*
       3             :  * Internal header to deal with irq_desc->status which will be renamed
       4             :  * to irq_desc->settings.
       5             :  */
       6             : enum {
       7             :         _IRQ_DEFAULT_INIT_FLAGS = IRQ_DEFAULT_INIT_FLAGS,
       8             :         _IRQ_PER_CPU            = IRQ_PER_CPU,
       9             :         _IRQ_LEVEL              = IRQ_LEVEL,
      10             :         _IRQ_NOPROBE            = IRQ_NOPROBE,
      11             :         _IRQ_NOREQUEST          = IRQ_NOREQUEST,
      12             :         _IRQ_NOTHREAD           = IRQ_NOTHREAD,
      13             :         _IRQ_NOAUTOEN           = IRQ_NOAUTOEN,
      14             :         _IRQ_MOVE_PCNTXT        = IRQ_MOVE_PCNTXT,
      15             :         _IRQ_NO_BALANCING       = IRQ_NO_BALANCING,
      16             :         _IRQ_NESTED_THREAD      = IRQ_NESTED_THREAD,
      17             :         _IRQ_PER_CPU_DEVID      = IRQ_PER_CPU_DEVID,
      18             :         _IRQ_IS_POLLED          = IRQ_IS_POLLED,
      19             :         _IRQ_DISABLE_UNLAZY     = IRQ_DISABLE_UNLAZY,
      20             :         _IRQ_HIDDEN             = IRQ_HIDDEN,
      21             :         _IRQF_MODIFY_MASK       = IRQF_MODIFY_MASK,
      22             : };
      23             : 
      24             : #define IRQ_PER_CPU             GOT_YOU_MORON
      25             : #define IRQ_NO_BALANCING        GOT_YOU_MORON
      26             : #define IRQ_LEVEL               GOT_YOU_MORON
      27             : #define IRQ_NOPROBE             GOT_YOU_MORON
      28             : #define IRQ_NOREQUEST           GOT_YOU_MORON
      29             : #define IRQ_NOTHREAD            GOT_YOU_MORON
      30             : #define IRQ_NOAUTOEN            GOT_YOU_MORON
      31             : #define IRQ_NESTED_THREAD       GOT_YOU_MORON
      32             : #define IRQ_PER_CPU_DEVID       GOT_YOU_MORON
      33             : #define IRQ_IS_POLLED           GOT_YOU_MORON
      34             : #define IRQ_DISABLE_UNLAZY      GOT_YOU_MORON
      35             : #define IRQ_HIDDEN              GOT_YOU_MORON
      36             : #undef IRQF_MODIFY_MASK
      37             : #define IRQF_MODIFY_MASK        GOT_YOU_MORON
      38             : 
      39             : static inline void
      40          46 : irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set)
      41             : {
      42          46 :         desc->status_use_accessors &= ~(clr & _IRQF_MODIFY_MASK);
      43          46 :         desc->status_use_accessors |= (set & _IRQF_MODIFY_MASK);
      44             : }
      45             : 
      46          30 : static inline bool irq_settings_is_per_cpu(struct irq_desc *desc)
      47             : {
      48          30 :         return desc->status_use_accessors & _IRQ_PER_CPU;
      49             : }
      50             : 
      51           4 : static inline bool irq_settings_is_per_cpu_devid(struct irq_desc *desc)
      52             : {
      53           4 :         return desc->status_use_accessors & _IRQ_PER_CPU_DEVID;
      54             : }
      55             : 
      56           0 : static inline void irq_settings_set_per_cpu(struct irq_desc *desc)
      57             : {
      58           0 :         desc->status_use_accessors |= _IRQ_PER_CPU;
      59           0 : }
      60             : 
      61           0 : static inline void irq_settings_set_no_balancing(struct irq_desc *desc)
      62             : {
      63           0 :         desc->status_use_accessors |= _IRQ_NO_BALANCING;
      64             : }
      65             : 
      66          30 : static inline bool irq_settings_has_no_balance_set(struct irq_desc *desc)
      67             : {
      68          30 :         return desc->status_use_accessors & _IRQ_NO_BALANCING;
      69             : }
      70             : 
      71          30 : static inline u32 irq_settings_get_trigger_mask(struct irq_desc *desc)
      72             : {
      73          30 :         return desc->status_use_accessors & IRQ_TYPE_SENSE_MASK;
      74             : }
      75             : 
      76             : static inline void
      77           0 : irq_settings_set_trigger_mask(struct irq_desc *desc, u32 mask)
      78             : {
      79           0 :         desc->status_use_accessors &= ~IRQ_TYPE_SENSE_MASK;
      80           0 :         desc->status_use_accessors |= mask & IRQ_TYPE_SENSE_MASK;
      81             : }
      82             : 
      83          34 : static inline bool irq_settings_is_level(struct irq_desc *desc)
      84             : {
      85          34 :         return desc->status_use_accessors & _IRQ_LEVEL;
      86             : }
      87             : 
      88           0 : static inline void irq_settings_clr_level(struct irq_desc *desc)
      89             : {
      90           0 :         desc->status_use_accessors &= ~_IRQ_LEVEL;
      91             : }
      92             : 
      93           0 : static inline void irq_settings_set_level(struct irq_desc *desc)
      94             : {
      95           0 :         desc->status_use_accessors |= _IRQ_LEVEL;
      96             : }
      97             : 
      98           4 : static inline bool irq_settings_can_request(struct irq_desc *desc)
      99             : {
     100           4 :         return !(desc->status_use_accessors & _IRQ_NOREQUEST);
     101             : }
     102             : 
     103             : static inline void irq_settings_clr_norequest(struct irq_desc *desc)
     104             : {
     105             :         desc->status_use_accessors &= ~_IRQ_NOREQUEST;
     106             : }
     107             : 
     108           0 : static inline void irq_settings_set_norequest(struct irq_desc *desc)
     109             : {
     110           0 :         desc->status_use_accessors |= _IRQ_NOREQUEST;
     111             : }
     112             : 
     113        3484 : static inline bool irq_settings_can_thread(struct irq_desc *desc)
     114             : {
     115        3484 :         return !(desc->status_use_accessors & _IRQ_NOTHREAD);
     116             : }
     117             : 
     118             : static inline void irq_settings_clr_nothread(struct irq_desc *desc)
     119             : {
     120             :         desc->status_use_accessors &= ~_IRQ_NOTHREAD;
     121             : }
     122             : 
     123           0 : static inline void irq_settings_set_nothread(struct irq_desc *desc)
     124             : {
     125           0 :         desc->status_use_accessors |= _IRQ_NOTHREAD;
     126             : }
     127             : 
     128           0 : static inline bool irq_settings_can_probe(struct irq_desc *desc)
     129             : {
     130           0 :         return !(desc->status_use_accessors & _IRQ_NOPROBE);
     131             : }
     132             : 
     133             : static inline void irq_settings_clr_noprobe(struct irq_desc *desc)
     134             : {
     135             :         desc->status_use_accessors &= ~_IRQ_NOPROBE;
     136             : }
     137             : 
     138           0 : static inline void irq_settings_set_noprobe(struct irq_desc *desc)
     139             : {
     140           0 :         desc->status_use_accessors |= _IRQ_NOPROBE;
     141             : }
     142             : 
     143          30 : static inline bool irq_settings_can_move_pcntxt(struct irq_desc *desc)
     144             : {
     145          30 :         return desc->status_use_accessors & _IRQ_MOVE_PCNTXT;
     146             : }
     147             : 
     148           4 : static inline bool irq_settings_can_autoenable(struct irq_desc *desc)
     149             : {
     150           4 :         return !(desc->status_use_accessors & _IRQ_NOAUTOEN);
     151             : }
     152             : 
     153           4 : static inline bool irq_settings_is_nested_thread(struct irq_desc *desc)
     154             : {
     155           4 :         return desc->status_use_accessors & _IRQ_NESTED_THREAD;
     156             : }
     157             : 
     158        3480 : static inline bool irq_settings_is_polled(struct irq_desc *desc)
     159             : {
     160        3480 :         return desc->status_use_accessors & _IRQ_IS_POLLED;
     161             : }
     162             : 
     163           0 : static inline bool irq_settings_disable_unlazy(struct irq_desc *desc)
     164             : {
     165           0 :         return desc->status_use_accessors & _IRQ_DISABLE_UNLAZY;
     166             : }
     167             : 
     168           0 : static inline void irq_settings_clr_disable_unlazy(struct irq_desc *desc)
     169             : {
     170           0 :         desc->status_use_accessors &= ~_IRQ_DISABLE_UNLAZY;
     171             : }
     172             : 
     173           0 : static inline bool irq_settings_is_hidden(struct irq_desc *desc)
     174             : {
     175           0 :         return desc->status_use_accessors & _IRQ_HIDDEN;
     176             : }

Generated by: LCOV version 1.14