Changes in benchmark/io/http/worker.hfa [329e26a:ef3c383]
- File:
-
- 1 edited
-
benchmark/io/http/worker.hfa (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
benchmark/io/http/worker.hfa
r329e26a ref3c383 1 1 #pragma once 2 2 3 #include <iofwd.hfa>4 #include <queueLockFree.hfa>5 3 #include <thread.hfa> 6 4 … … 9 7 } 10 8 11 #include "printer.hfa"12 13 9 //============================================================================================= 14 10 // Worker Thread 15 11 //============================================================================================= 16 12 17 struct connection { 18 int pipe[2]; 13 extern const size_t zipf_sizes[]; 14 enum { zipf_cnts = 36, }; 15 16 struct sendfile_stats_t { 17 volatile uint64_t calls; 18 volatile uint64_t tries; 19 volatile uint64_t header; 20 volatile uint64_t splcin; 21 volatile uint64_t splcot; 19 22 struct { 20 sendfile_stats_t sendfile; 21 } stats; 23 volatile uint64_t calls; 24 volatile uint64_t bytes; 25 } avgrd[zipf_cnts]; 22 26 }; 23 27 24 static inline void ?{}( connection & this ) { 25 this.pipe[0] = -1; 26 this.pipe[1] = -1; 27 } 28 29 thread AcceptWorker { 30 connection conn; 28 thread Worker { 29 int pipe[2]; 31 30 int sockfd; 32 31 struct sockaddr * addr; … … 34 33 int flags; 35 34 volatile bool done; 35 struct { 36 sendfile_stats_t sendfile; 37 } stats; 36 38 }; 37 void ?{}( AcceptWorker & this); 38 void main( AcceptWorker & ); 39 40 41 struct PendingRead { 42 PendingRead * volatile next; 43 io_future_t f; 44 struct { 45 void * buf; 46 size_t len; 47 } in; 48 struct { 49 volatile int fd; 50 } out; 51 }; 52 53 static inline PendingRead * volatile & ?`next ( PendingRead * node ) { 54 return node->next; 55 } 56 57 thread ChannelWorker { 58 connection conn; 59 volatile bool done; 60 mpsc_queue(PendingRead) * queue; 61 }; 62 void ?{}( ChannelWorker & ); 63 void main( ChannelWorker & ); 64 65 thread Acceptor { 66 mpsc_queue(PendingRead) * queue; 67 int sockfd; 68 struct sockaddr * addr; 69 socklen_t * addrlen; 70 int flags; 71 volatile bool done; 72 acceptor_stats_t stats; 73 }; 74 void ?{}( Acceptor &, int cli ); 75 void main( Acceptor & ); 39 void ?{}( Worker & this); 40 void main( Worker & );
Note:
See TracChangeset
for help on using the changeset viewer.