runtime: document all functions (#7612)

pull/7634/head
Larpon 2020-12-27 19:14:43 +01:00 committed by GitHub
parent d87011ab78
commit 9e6575eaab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 24 additions and 9 deletions

View File

@ -0,0 +1,13 @@
// Copyright (c) 2019-2020 Alexander Medvednikov. All rights reserved.
// Use of this source code is governed by an MIT license
// that can be found in the LICENSE file.
module runtime
//$if linux {
fn C.sysconf(name int) i64
//}
//$if windows {
fn C.GetCurrentProcessorNumber() u32
//}

View File

@ -6,14 +6,10 @@ module runtime
import os import os
//$if linux { // nr_jobs returns the same as `nr_cpus` with the difference that if an
fn C.sysconf(name int) i64 // environment variable `VJOBS` is set, and has a value > 0,
//} // then `nr_jobs` will return that number instead.
// This is useful for runtime tweaking of e.g. threaded or concurrent code.
//$if windows {
fn C.GetCurrentProcessorNumber() u32
//}
pub fn nr_jobs() int { pub fn nr_jobs() int {
mut cpus := nr_cpus() mut cpus := nr_cpus()
// allow for overrides, for example using `VJOBS=32 ./v test .` // allow for overrides, for example using `VJOBS=32 ./v test .`
@ -24,21 +20,25 @@ pub fn nr_jobs() int {
return cpus return cpus
} }
// is_32bit returns true if the current executable is running on a 32 bit system.
pub fn is_32bit() bool { pub fn is_32bit() bool {
$if x32 { return true } $if x32 { return true }
return false return false
} }
// is_64bit returns true if the current executable is running on a 64 bit system.
pub fn is_64bit() bool { pub fn is_64bit() bool {
$if x64 { return true } $if x64 { return true }
return false return false
} }
// is_little_endian returns true if the current executable is running on a little-endian system.
pub fn is_little_endian() bool { pub fn is_little_endian() bool {
$if little_endian { return true } $if little_endian { return true }
return false return false
} }
// is_big_endian returns true if the current executable is running on a big-endian system.
pub fn is_big_endian() bool { pub fn is_big_endian() bool {
$if big_endian { return true } $if big_endian { return true }
return false return false

View File

@ -1,5 +1,6 @@
module runtime module runtime
// nr_cpus returns the number of virtual CPU cores found on the system.
pub fn nr_cpus() int { pub fn nr_cpus() int {
$if linux { $if linux {
return int(C.sysconf(C._SC_NPROCESSORS_ONLN)) return int(C.sysconf(C._SC_NPROCESSORS_ONLN))

View File

@ -8,6 +8,7 @@ struct C.SYSTEM_INFO {
} }
fn C.GetSystemInfo(&C.SYSTEM_INFO) fn C.GetSystemInfo(&C.SYSTEM_INFO)
// nr_cpus returns the number of virtual CPU cores found on the system.
pub fn nr_cpus() int { pub fn nr_cpus() int {
sinfo := C.SYSTEM_INFO{} sinfo := C.SYSTEM_INFO{}
C.GetSystemInfo(&sinfo) C.GetSystemInfo(&sinfo)