v2.0.0
Macros | Functions
doorbell
High Level APIs » pico_multicore

Functions related to doorbells which a core can use to raise IRQs on itself or the other core. More...

## Macros
#define | DOORBELL_IRQ_NUM(doorbell_num)
| Returns the irq_num_t for processor interrupts for the given doorbell number. More...

## Functions
void | multicore_doorbell_claim (uint doorbell_num, uint core_mask)
| Cooperatively claim the use of this hardware alarm_num. More...
int | multicore_doorbell_claim_unused (uint core_mask, bool required)
| Cooperatively claim the use of this hardware alarm_num. More...
void | multicore_doorbell_unclaim (uint doorbell_num, uint core_mask)
| Cooperatively release the claim on use of this hardware alarm_num. More...
static void | multicore_doorbell_set_other_core (uint doorbell_num)
| Activate the given doorbell on the other core. More...
static void | multicore_doorbell_clear_other_core (uint doorbell_num)
| Deactivate the given doorbell on the other core. More...
static void | multicore_doorbell_set_current_core (uint doorbell_num)
| Activate the given doorbell on this core. More...
static void | multicore_doorbell_clear_current_core (uint doorbell_num)
| Deactivate the given doorbell on this core. More...
static bool | multicore_doorbell_is_set_current_core (uint doorbell_num)
| Determine if the given doorbell is active on the other core. More...
static bool | multicore_doorbell_is_set_other_core (uint doorbell_num)
| Determine if the given doorbell is active on the this core. More...

## Detailed Description

Functions related to doorbells which a core can use to raise IRQs on itself or the other core.

## Macro Definition Documentation

## ◆ DOORBELL_IRQ_NUM

#define DOORBELL_IRQ_NUM | ( |  | doorbell_num | ) |

Returns the irq_num_t for processor interrupts for the given doorbell number.

Note this macro is intended to resolve at compile time, and does no parameter checking

## Function Documentation

## ◆ multicore_doorbell_claim()

void multicore_doorbell_claim | ( | uint | doorbell_num,
|  | uint | core_mask
| ) |  |

Cooperatively claim the use of this hardware alarm_num.

This method hard asserts if the hardware alarm is currently claimed.

Parameters

  doorbell_num | the doorbell number to claim
  core_mask | 0b01: core 0, 0b10: core 1, 0b11 both core 0 and core 1

See also
  hardware_claiming

## ◆ multicore_doorbell_claim_unused()

int multicore_doorbell_claim_unused | ( | uint | core_mask,
|  | bool | required
| ) |  |

Cooperatively claim the use of this hardware alarm_num.

This method attempts to claim an unused hardware alarm

Parameters

  core_mask | 0b01: core 0, 0b10: core 1, 0b11 both core 0 and core 1
  required | if true the function will panic if none are available

Returns
  the doorbell number claimed or -1 if required was false, and none are available

See also
  hardware_claiming

## ◆ multicore_doorbell_clear_current_core()

static void multicore_doorbell_clear_current_core | ( | uint | doorbell_num | ) |
| inlinestatic

Deactivate the given doorbell on this core.

Parameters

  doorbell_num | the doorbell number

## ◆ multicore_doorbell_clear_other_core()

static void multicore_doorbell_clear_other_core | ( | uint | doorbell_num | ) |
| inlinestatic

Deactivate the given doorbell on the other core.

Parameters

  doorbell_num | the doorbell number

## ◆ multicore_doorbell_is_set_current_core()

static bool multicore_doorbell_is_set_current_core | ( | uint | doorbell_num | ) |
| inlinestatic

Determine if the given doorbell is active on the other core.

Parameters

  doorbell_num | the doorbell number

## ◆ multicore_doorbell_is_set_other_core()

static bool multicore_doorbell_is_set_other_core | ( | uint | doorbell_num | ) |
| inlinestatic

Determine if the given doorbell is active on the this core.

Parameters

  doorbell_num | the doorbell number

## ◆ multicore_doorbell_set_current_core()

static void multicore_doorbell_set_current_core | ( | uint | doorbell_num | ) |
| inlinestatic

Activate the given doorbell on this core.

Parameters

  doorbell_num | the doorbell number

## ◆ multicore_doorbell_set_other_core()

static void multicore_doorbell_set_other_core | ( | uint | doorbell_num | ) |
| inlinestatic

Activate the given doorbell on the other core.

Parameters

  doorbell_num | the doorbell number

## ◆ multicore_doorbell_unclaim()

void multicore_doorbell_unclaim | ( | uint | doorbell_num,
|  | uint | core_mask
| ) |  |

Cooperatively release the claim on use of this hardware alarm_num.

Parameters

  doorbell_num | the doorbell number to unclaim
  core_mask | 0b01: core 0, 0b10: core 1, 0b11 both core 0 and core 1

See also
  hardware_claiming