Skip to content

Commit

Permalink
fix: Use AtomicUsize for TaskId
Browse files Browse the repository at this point in the history
Closes #141
  • Loading branch information
taiki-e authored and dignifiedquire committed May 7, 2020
1 parent 6f6fced commit 3c48e93
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 5 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,39 @@ jobs:
command: check
args: --no-default-features --features alloc --target thumbv7m-none-eabi -Z avoid-dev-deps

cross:
name: Cross compile
runs-on: ubuntu-latest
strategy:
matrix:
target:
- i686-unknown-linux-gnu
- powerpc-unknown-linux-gnu
- powerpc64-unknown-linux-gnu
- mips-unknown-linux-gnu
- arm-linux-androideabi

steps:
- uses: actions/checkout@master

- name: Install nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true

- name: Install cross
run: cargo install cross

- name: check
run: cross check --all --target ${{ matrix.target }}

- name: check unstable
run: cross check --all --features unstable --target ${{ matrix.target }}

- name: test
run: cross test --all --features unstable --target ${{ matrix.target }}

check_fmt_and_docs:
name: Checking fmt and docs
runs-on: ubuntu-latest
Expand Down
8 changes: 7 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ pin-project-lite = { version = "0.1.4", optional = true }
pin-utils = { version = "0.1.0-alpha.4", optional = true }
slab = { version = "0.4.2", optional = true }

# Devdepencency, but they are not allowed to be optional :/
surf = { version = "1.0.3", optional = true }

[target.'cfg(not(target_os = "unknown"))'.dependencies]
smol = { version = "0.1.1", optional = true }

Expand All @@ -81,7 +84,6 @@ wasm-bindgen-test = "0.3.10"
[dev-dependencies]
femme = "1.3.0"
rand = "0.7.3"
surf = "1.0.3"
tempdir = "0.3.7"
futures = "0.3.4"
rand_xorshift = "0.2.0"
Expand All @@ -93,3 +95,7 @@ required-features = ["unstable"]
[[example]]
name = "tcp-ipv4-and-6-echo"
required-features = ["unstable"]

[[example]]
name = "surf-web"
required-features = ["surf"]
9 changes: 5 additions & 4 deletions src/task/task_id.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use std::fmt;
use std::sync::atomic::{AtomicU64, Ordering};
use std::sync::atomic::{AtomicUsize, Ordering};

/// A unique identifier for a task.
///
Expand All @@ -13,15 +13,16 @@ use std::sync::atomic::{AtomicU64, Ordering};
/// })
/// ```
#[derive(Eq, PartialEq, Clone, Copy, Hash, Debug)]
pub struct TaskId(pub(crate) u64);
pub struct TaskId(pub(crate) usize);

impl TaskId {
/// Generates a new `TaskId`.
pub(crate) fn generate() -> TaskId {
static COUNTER: AtomicU64 = AtomicU64::new(1);
// TODO: find a good version to emulate u64 atomics on 32 bit systems.
static COUNTER: AtomicUsize = AtomicUsize::new(1);

let id = COUNTER.fetch_add(1, Ordering::Relaxed);
if id > u64::max_value() / 2 {
if id > usize::max_value() / 2 {
std::process::abort();
}
TaskId(id)
Expand Down

0 comments on commit 3c48e93

Please sign in to comment.