Changeset 4f102fa for libcfa/src
- Timestamp:
- Oct 11, 2022, 8:28:32 PM (2 years ago)
- Branches:
- ADT, ast-experimental, master
- Children:
- e5256bd
- Parents:
- 116a2ea (diff), a55472cc (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- libcfa/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/io.cfa
r116a2ea r4f102fa 551 551 enqueue(this.pending, (__outstanding_io&)pa); 552 552 553 wait( pa. sem);553 wait( pa.waitctx ); 554 554 555 555 return pa.ctx; … … 578 578 pa.ctx = ctx; 579 579 580 post( pa. sem);580 post( pa.waitctx ); 581 581 } 582 582 … … 613 613 } 614 614 615 wait( ei. sem);615 wait( ei.waitctx ); 616 616 617 617 __cfadbg_print_safe(io, "Kernel I/O : %u submitted from arbiter\n", have); … … 631 631 __submit_only(&ctx, ei.idxs, ei.have); 632 632 633 post( ei. sem);633 post( ei.waitctx ); 634 634 } 635 635 -
libcfa/src/concurrency/io/types.hfa
r116a2ea r4f102fa 107 107 struct __outstanding_io { 108 108 inline Colable; 109 single_sem sem;109 oneshot waitctx; 110 110 }; 111 111 static inline __outstanding_io *& Next( __outstanding_io * n ) { return (__outstanding_io *)Next( (Colable *)n ); } -
libcfa/src/concurrency/kernel/cluster.hfa
r116a2ea r4f102fa 21 21 22 22 #include <limits.h> 23 #include <inttypes.h> 23 24 24 25 #include "clock.hfa" … … 30 31 31 32 // warn normally all ints 32 #define warn_large_before warnf( !strict || old_avg < 33_000_000_000, "Suspiciously large previous average: %'llu (%llx), %' ldms \n", old_avg, old_avg, program()`ms )33 #define warn_large_after warnf( !strict || ret < 33_000_000_000, "Suspiciously large new average after %' ldms cputime: %'llu (%llx) from %'llu-%'llu (%'llu, %'llu) and %'llu\n", program()`ms, ret, ret, currtsc, intsc, new_val, new_val / 1000000, old_avg )33 #define warn_large_before warnf( !strict || old_avg < 33_000_000_000, "Suspiciously large previous average: %'llu (%llx), %'" PRId64 "ms \n", old_avg, old_avg, program()`ms ) 34 #define warn_large_after warnf( !strict || ret < 33_000_000_000, "Suspiciously large new average after %'" PRId64 "ms cputime: %'llu (%llx) from %'llu-%'llu (%'llu, %'llu) and %'llu\n", program()`ms, ret, ret, currtsc, intsc, new_val, new_val / 1000000, old_avg ) 34 35 35 36 // 8X linear factor is just 8 * x … … 41 42 static inline __readyQ_avg_t __to_readyQ_avg(unsigned long long intsc) { if(unlikely(0 == intsc)) return 0.0; else return log2(intsc); } 42 43 43 #define warn_large_before warnf( !strict || old_avg < 35.0, "Suspiciously large previous average: %'lf, %' ldms \n", old_avg, program()`ms )44 #define warn_large_after warnf( !strict || ret < 35.3, "Suspiciously large new average after %' ldms cputime: %'lf from %'llu-%'llu (%'llu, %'llu) and %'lf\n", program()`ms, ret, currtsc, intsc, new_val, new_val / 1000000, old_avg ); \44 #define warn_large_before warnf( !strict || old_avg < 35.0, "Suspiciously large previous average: %'lf, %'" PRId64 "ms \n", old_avg, program()`ms ) 45 #define warn_large_after warnf( !strict || ret < 35.3, "Suspiciously large new average after %'" PRId64 "ms cputime: %'lf from %'llu-%'llu (%'llu, %'llu) and %'lf\n", program()`ms, ret, currtsc, intsc, new_val, new_val / 1000000, old_avg ); \ 45 46 verify(ret >= 0) 46 47 -
libcfa/src/parseargs.cfa
r116a2ea r4f102fa 1 1 #include "parseargs.hfa" 2 2 3 #include <ctype.h> 3 4 #include <stdint.h> 4 5 #include <string.h> 5 6 #include <errno.h> 6 7 #include <unistd.h> 7 #include <assert.h>8 8 9 9 extern "C" { … … 74 74 75 75 int maxv = 'h'; 76 assert( opt_count > 0 ); 77 char optstring[opt_count * 3] = { '\0' }; 76 char optstring[(opt_count * 3) + 2] = { '\0' }; 78 77 { 79 78 int idx = 0; … … 272 271 bool parse(const char * arg, int & value) { 273 272 char * end; 274 int r = strtoll(arg, &end, 10); 273 274 errno = 0; 275 long long int r = strtoll(arg, &end, 0); 276 if(errno) return false; 275 277 if(*end != '\0') return false; 276 277 value = r; 278 return true; 278 if(r > (int)MAX) return false; 279 if(r < (int)MIN) return false; 280 281 value = r; 282 return true; 283 } 284 285 static unsigned long long int strict_strtoull( const char * arg, int base) { 286 errno = 0; 287 { 288 const char * in = arg; 289 for() { 290 if('\0' == *in) { 291 errno = EINVAL; 292 return 0; 293 } 294 if(!isspace(*in)) break; 295 in++; 296 } 297 if(!isdigit(*in)) { 298 errno = EINVAL; 299 return 0; 300 } 301 } 302 303 *char end; 304 unsigned long long int r = strtoull(arg, &end, base); 305 if(*end != '\0') errno = EINVAL; 306 if(errno) return 0; 307 return r; 279 308 } 280 309 281 310 bool parse(const char * arg, unsigned & value) { 282 char * end; 283 unsigned long long int r = strtoull(arg, &end, 10); 284 if(*end != '\0') return false; 311 unsigned long long int r = strict_strtoull(arg, 0); 312 if(errno) return false; 285 313 if(r > (unsigned)MAX) return false; 286 314 … … 290 318 291 319 bool parse(const char * arg, unsigned long & value) { 292 char * end; 293 unsigned long long int r = strtoull(arg, &end, 10); 294 if(*end != '\0') return false; 320 unsigned long long int r = strict_strtoull(arg, 0); 321 if(errno) return false; 295 322 if(r > (unsigned long)MAX) return false; 296 323 … … 300 327 301 328 bool parse(const char * arg, unsigned long long & value) { 302 char * end; 303 unsigned long long int r = strtoull(arg, &end, 10); 304 if(*end != '\0') return false; 305 if(r > (unsigned long long)MAX) return false; 306 307 value = r; 308 return true; 329 unsigned long long int r = strict_strtoull(arg, 0); 330 if(errno) return false; 331 if(r > (unsigned long long)MAX) return false; 332 333 value = r; 334 return true; 309 335 } 310 336
Note: See TracChangeset
for help on using the changeset viewer.