Skip to content

thread: add pthread-based threading module#72

Draft
arkjedrz wants to merge 1 commit intoeclipse-score:mainfrom
qorix-group:arkjedrz_custom-thread
Draft

thread: add pthread-based threading module#72
arkjedrz wants to merge 1 commit intoeclipse-score:mainfrom
qorix-group:arkjedrz_custom-thread

Conversation

@arkjedrz
Copy link
Contributor

Parametrizable threading module.

Notes for Reviewer

Pre-Review Checklist for the PR Author

  • PR title is short, expressive and meaningful
  • Commits are properly organized
  • Relevant issues are linked in the References section
  • Tests are conducted
  • Unit tests are added

Checklist for the PR Reviewer

  • Commits are properly organized and messages are according to the guideline
  • Unit tests have been written for new behavior
  • Public API is documented
  • PR title describes the changes

Post-review Checklist for the PR Author

  • All open points are addressed and tracked via issues

References

Closes #

Parametrizable threading module.
@github-actions
Copy link

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run --lockfile_mode=error //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Extracting Bazel installation...
Starting local Bazel server (8.4.2) and connecting to it...
INFO: Invocation ID: 2750f7a8-a08b-4886-aa79-1eba6d41e771
Computing main repo mapping: 
Computing main repo mapping: 
WARNING: For repository 'rules_python', the root module requires module version rules_python@1.4.1, but got rules_python@1.8.3 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
WARNING: For repository 'bazel_skylib', the root module requires module version bazel_skylib@1.7.1, but got bazel_skylib@1.8.2 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
WARNING: For repository 'rules_rust', the root module requires module version rules_rust@0.61.0, but got rules_rust@0.67.0 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
WARNING: For repository 'rules_cc', the root module requires module version rules_cc@0.1.1, but got rules_cc@0.2.14 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
WARNING: For repository 'buildifier_prebuilt', the root module requires module version buildifier_prebuilt@7.3.1, but got buildifier_prebuilt@8.2.0.2 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
Loading: 
Loading: 0 packages loaded
Loading: 0 packages loaded
Loading: 0 packages loaded
    currently loading: 
Loading: 0 packages loaded
    currently loading: 
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)

Analyzing: target //:license-check (30 packages loaded, 9 targets configured)

Analyzing: target //:license-check (99 packages loaded, 21 targets configured)

Analyzing: target //:license-check (143 packages loaded, 1088 targets configured)

Analyzing: target //:license-check (143 packages loaded, 1088 targets configured)

Analyzing: target //:license-check (152 packages loaded, 1710 targets configured)

Analyzing: target //:license-check (154 packages loaded, 3157 targets configured)

Analyzing: target //:license-check (165 packages loaded, 3236 targets configured)

Analyzing: target //:license-check (165 packages loaded, 3236 targets configured)

Analyzing: target //:license-check (165 packages loaded, 3236 targets configured)

Analyzing: target //:license-check (169 packages loaded, 5249 targets configured)

Analyzing: target //:license-check (192 packages loaded, 5541 targets configured)
[8 / 17] Creating runfiles tree bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/score_tooling+/dash/tool/formatters/dash_format_converter.runfiles [for tool]; 0s local ... (2 actions, 1 running)
Analyzing: target //:license-check (197 packages loaded, 5552 targets configured)
[13 / 17] JavaToolchainCompileClasses external/rules_java+/toolchains/platformclasspath_classes; 0s disk-cache, processwrapper-sandbox ... (2 actions running)
INFO: From Generating Dash formatted dependency file ...:
INFO: Successfully converted 5 packages from Cargo.lock to bazel-out/k8-fastbuild/bin/formatted.txt
Analyzing: target //:license-check (197 packages loaded, 5552 targets configured)
[15 / 17] JavaToolchainCompileBootClasspath external/rules_java+/toolchains/platformclasspath.jar; 0s disk-cache, processwrapper-sandbox
Analyzing: target //:license-check (197 packages loaded, 5552 targets configured)
[16 / 17] Building license.check.license_check.jar (); 0s disk-cache, multiplex-worker
Analyzing: target //:license-check (197 packages loaded, 5552 targets configured)
[17 / 17] no actions running
Analyzing: target //:license-check (198 packages loaded, 9886 targets configured)
[17 / 17] no actions running
INFO: Analyzed target //:license-check (198 packages loaded, 9886 targets configured).
INFO: Found 1 target...
Target //:license.check.license_check up-to-date:
  bazel-bin/license.check.license_check
  bazel-bin/license.check.license_check.jar
INFO: Elapsed time: 27.576s, Critical Path: 3.37s
INFO: 17 processes: 12 internal, 4 processwrapper-sandbox, 1 worker.
INFO: Build completed successfully, 17 total actions
INFO: Running command line: bazel-bin/license.check.license_check ./formatted.txt <args omitted>
usage: org.eclipse.dash.licenses.cli.Main [-batch <int>] [-cd <url>]
       [-confidence <int>] [-ef <url>] [-excludeSources <sources>] [-help] [-lic
       <url>] [-project <shortname>] [-repo <url>] [-review] [-summary <file>]
       [-timeout <seconds>] [-token <token>]

@github-actions
Copy link

The created documentation from the pull request is available at: docu-html

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new thread Rust crate that provides a pthread-based, parameterizable thread-spawning API (scheduler policy/priority, CPU affinity, stack size) and integrates it into the workspace build (Cargo + Bazel).

Changes:

  • Introduce thread crate with spawn + JoinHandle, plus ThreadParameters/SchedulerParameters.
  • Implement pthread_attr_* configuration for scheduling, affinity, and stack size.
  • Register the crate in the workspace (Cargo.toml, Cargo.lock) and Bazel (src/thread/BUILD).

Reviewed changes

Copilot reviewed 6 out of 7 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
src/thread/thread.rs Core pthread-based implementation and unit tests.
src/thread/parameters.rs Public parameter types for scheduler/affinity/stack size, plus tests.
src/thread/lib.rs Crate module wiring and public re-exports.
src/thread/Cargo.toml New crate manifest using workspace libc.
src/thread/BUILD Bazel targets for the new Rust library and its tests.
Cargo.toml Add src/thread to workspace members/default-members and deps.
Cargo.lock Lockfile updates for new thread crate and libc.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +170 to +172
let data = unsafe { core::ptr::read(data as *const ThreadData<T, F>) };
let result = (data.f)();
Box::into_raw(Box::new(result)).cast()
data as *mut _,
)
};
if rc != 0 {
Comment on lines +195 to +199
/// An owned permission to join on a thread (block on its termination).
pub struct JoinHandle<T> {
thread: Thread,
_marker: PhantomData<T>,
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

2 participants