Skip to content

Commit 66138a2

Browse files
committed
feat: use portable-atomic to enable using opentelemetry-sdk for xtensa arch
1 parent 2fca21c commit 66138a2

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

opentelemetry-sdk/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ tokio-stream = { workspace = true, optional = true }
2828
http = { workspace = true, optional = true }
2929
tracing = {workspace = true, optional = true}
3030

31+
[target.'cfg(any(target_arch = "xtensa"))'.dependencies]
32+
portable-atomic = {workspace = true}
33+
3134
[package.metadata.docs.rs]
3235
all-features = true
3336
rustdoc-args = ["--cfg", "docsrs"]

opentelemetry-sdk/src/metrics/internal/mod.rs

+17-10
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,14 @@ use core::fmt;
99
use std::collections::{HashMap, HashSet};
1010
use std::mem::swap;
1111
use std::ops::{Add, AddAssign, DerefMut, Sub};
12-
use std::sync::atomic::{AtomicBool, AtomicI64, AtomicU64, AtomicUsize, Ordering};
12+
use std::sync::atomic::{Ordering};
13+
14+
#[cfg(not(any(target_arch = "xtensa")))]
15+
use std::sync::atomic::{AtomicBool, AtomicI64, AtomicU64, AtomicUsize};
16+
17+
#[cfg(any(target_arch = "xtensa"))]
18+
use portable_atomic::{AtomicBool, AtomicI64, AtomicU64, AtomicUsize};
19+
1320
use std::sync::{Arc, OnceLock, RwLock};
1421

1522
use aggregate::{is_under_cardinality_limit, STREAM_CARDINALITY_LIMIT};
@@ -439,8 +446,8 @@ mod tests {
439446
#[test]
440447
fn can_add_and_get_u64_atomic_value() {
441448
let atomic = u64::new_atomic_tracker(0);
442-
atomic.add(15);
443-
atomic.add(10);
449+
AtomicTracker::add(&atomic,15);
450+
AtomicTracker::add(&atomic,10);
444451

445452
let value = atomic.get_value();
446453
assert_eq!(value, 25);
@@ -449,7 +456,7 @@ mod tests {
449456
#[test]
450457
fn can_reset_u64_atomic_value() {
451458
let atomic = u64::new_atomic_tracker(0);
452-
atomic.add(15);
459+
AtomicTracker::add(&atomic,15);
453460

454461
let value = atomic.get_and_reset_value();
455462
let value2 = atomic.get_value();
@@ -478,8 +485,8 @@ mod tests {
478485
#[test]
479486
fn can_add_and_get_i64_atomic_value() {
480487
let atomic = i64::new_atomic_tracker(0);
481-
atomic.add(15);
482-
atomic.add(-10);
488+
AtomicTracker::add(&atomic,15);
489+
AtomicTracker::add(&atomic,-10);
483490

484491
let value = atomic.get_value();
485492
assert_eq!(value, 5);
@@ -488,7 +495,7 @@ mod tests {
488495
#[test]
489496
fn can_reset_i64_atomic_value() {
490497
let atomic = i64::new_atomic_tracker(0);
491-
atomic.add(15);
498+
AtomicTracker::add(&atomic,15);
492499

493500
let value = atomic.get_and_reset_value();
494501
let value2 = atomic.get_value();
@@ -517,8 +524,8 @@ mod tests {
517524
#[test]
518525
fn can_add_and_get_f64_atomic_value() {
519526
let atomic = f64::new_atomic_tracker(0.0);
520-
atomic.add(15.3);
521-
atomic.add(10.4);
527+
AtomicTracker::add(&atomic,15.3);
528+
AtomicTracker::add(&atomic,10.4);
522529

523530
let value = atomic.get_value();
524531

@@ -528,7 +535,7 @@ mod tests {
528535
#[test]
529536
fn can_reset_f64_atomic_value() {
530537
let atomic = f64::new_atomic_tracker(0.0);
531-
atomic.add(15.5);
538+
AtomicTracker::add(&atomic,15.5);
532539

533540
let value = atomic.get_and_reset_value();
534541
let value2 = atomic.get_value();

0 commit comments

Comments
 (0)