Changes in / [16988e8:a85e44c]


Ignore:
Location:
src/tests
Files:
2 added
2 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • src/tests/concurrent/examples/.expect/datingService.txt

    r16988e8 ra85e44c  
    1 Girl:17 is dating Boy at 2 with ccode 17
    2  Boy:2 is dating Girl 17 with ccode 17
    3  Boy:14 is dating Girl 5 with ccode 5
    4 Girl:5 is dating Boy at 14 with ccode 5
    5  Boy:9 is dating Girl 10 with ccode 10
    6 Girl:10 is dating Boy at 9 with ccode 10
    7  Boy:1 is dating Girl 18 with ccode 18
    8 Girl:18 is dating Boy at 1 with ccode 18
    9  Boy:16 is dating Girl 3 with ccode 3
    10 Girl:3 is dating Boy at 16 with ccode 3
    11  Boy:5 is dating Girl 14 with ccode 14
    12 Girl:14 is dating Boy at 5 with ccode 14
    13  Boy:15 is dating Girl 4 with ccode 4
    14 Girl:4 is dating Boy at 15 with ccode 4
    15 Girl:0 is dating Boy at 19 with ccode 0
    16  Boy:19 is dating Girl 0 with ccode 0
    17 Girl:9 is dating Boy at 10 with ccode 9
    18  Boy:10 is dating Girl 9 with ccode 9
    19 Girl:11 is dating Boy at 8 with ccode 11
    20  Boy:8 is dating Girl 11 with ccode 11
    21  Boy:12 is dating Girl 7 with ccode 7
    22 Girl:7 is dating Boy at 12 with ccode 7
    23  Boy:11 is dating Girl 8 with ccode 8
    24 Girl:8 is dating Boy at 11 with ccode 8
    25 Girl:16 is dating Boy at 3 with ccode 16
    26  Boy:3 is dating Girl 16 with ccode 16
    27 Girl:15 is dating Boy at 4 with ccode 15
    28  Boy:4 is dating Girl 15 with ccode 15
    29 Girl:19 is dating Boy at 0 with ccode 19
    30  Boy:0 is dating Girl 19 with ccode 19
    31 Girl:2 is dating Boy at 17 with ccode 2
    32  Boy:17 is dating Girl 2 with ccode 2
    33  Boy:13 is dating Girl 6 with ccode 6
    34 Girl:6 is dating Boy at 13 with ccode 6
    35  Boy:7 is dating Girl 12 with ccode 12
    36 Girl:12 is dating Boy at 7 with ccode 12
    37 Girl:13 is dating Boy at 6 with ccode 13
    38  Boy:6 is dating Girl 13 with ccode 13
    39 Girl:1 is dating Boy at 18 with ccode 1
    40  Boy:18 is dating Girl 1 with ccode 1
  • src/tests/concurrent/examples/boundedBuffer.c

    r16988e8 ra85e44c  
    88// Created On       : Mon Oct 30 12:45:13 2017
    99// Last Modified By : Peter A. Buhr
    10 // Last Modified On : Tue Dec  5 23:01:51 2017
    11 // Update Count     : 10
     10// Last Modified On : Mon Oct 30 23:02:46 2017
     11// Update Count     : 9
    1212//
    1313
     
    3030int query( Buffer & buffer ) { return buffer.count; }
    3131
    32 void insert( Buffer & mutex buffer, int elem ) with( buffer ) {
    33         if ( count == 20 ) wait( empty );
    34         elements[back] = elem;
    35         back = ( back + 1 ) % 20;
    36         count += 1;
    37         signal( full );
     32void insert( Buffer & mutex buffer, int elem ) {
     33        if ( buffer.count == 20 ) wait( buffer.empty );
     34        buffer.elements[buffer.back] = elem;
     35        buffer.back = ( buffer.back + 1 ) % 20;
     36        buffer.count += 1;
     37        signal( buffer.full );
    3838}
    39 int remove( Buffer & mutex buffer ) with( buffer ) {
    40         if ( count == 0 ) wait( full );
    41         int elem = elements[front];
    42         front = ( front + 1 ) % 20;
    43         count -= 1;
    44         signal( empty );
     39int remove( Buffer & mutex buffer ) {
     40        if ( buffer.count == 0 ) wait( buffer.full );
     41        int elem = buffer.elements[buffer.front];
     42        buffer.front = ( buffer.front + 1 ) % 20;
     43        buffer.count -= 1;
     44        signal( buffer.empty );
    4545        return elem;
    4646}
  • src/tests/concurrent/examples/datingService.c

    r16988e8 ra85e44c  
    99// Created On       : Mon Oct 30 12:56:20 2017
    1010// Last Modified By : Peter A. Buhr
    11 // Last Modified On : Tue Dec  5 23:06:40 2017
    12 // Update Count     : 18
     11// Last Modified On : Mon Oct 30 23:02:11 2017
     12// Update Count     : 15
    1313//
    1414
     
    2626}; // DatingService
    2727
    28 unsigned int girl( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
    29         if ( is_empty( Boys[ccode] ) ) {
    30                 wait( Girls[ccode] );
    31                 GirlPhoneNo = PhoneNo;
     28unsigned int girl( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) {
     29        if ( is_empty( ds.Boys[ccode] ) ) {
     30                wait( ds.Girls[ccode] );
     31                ds.GirlPhoneNo = PhoneNo;
    3232        } else {
    33                 GirlPhoneNo = PhoneNo;
    34                 signal_block( Boys[ccode] );
     33                ds.GirlPhoneNo = PhoneNo;
     34                signal_block( ds.Boys[ccode] );
    3535        } // if
    36         return BoyPhoneNo;
     36        return ds.BoyPhoneNo;
    3737} // DatingService girl
    3838
    39 unsigned int boy( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
    40         if ( is_empty( Girls[ccode] ) ) {
    41                 wait( Boys[ccode] );
    42                 BoyPhoneNo = PhoneNo;
     39unsigned int boy( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) {
     40        if ( is_empty( ds.Girls[ccode] ) ) {
     41                wait( ds.Boys[ccode] );
     42                ds.BoyPhoneNo = PhoneNo;
    4343        } else {
    44                 BoyPhoneNo = PhoneNo;
    45                 signal_block( Girls[ccode] );
     44                ds.BoyPhoneNo = PhoneNo;
     45                signal_block( ds.Girls[ccode] );
    4646        } // if
    47         return GirlPhoneNo;
     47        return ds.GirlPhoneNo;
    4848} // DatingService boy
    4949
     
    5959        yield( random( 100 ) );                                                         // don't all start at the same time
    6060        unsigned int partner = girl( g.TheExchange, g.id, g.ccode );
    61         sout | "Girl:" | g.id | "is dating Boy at" | partner | "with ccode" | g.ccode | endl;
     61        //sout | "Girl:" | g.id | "is dating Boy at" | partner | "with ccode" | g.ccode | endl;
    6262        girlck[g.id] = partner;
    6363} // Girl main
     
    7777        yield( random( 100 ) );                                                         // don't all start at the same time
    7878        unsigned int partner = boy( b.TheExchange, b.id, b.ccode );
    79         sout | " Boy:" | b.id | "is dating Girl" | partner | "with ccode" | b.ccode | endl;
     79        //sout | " Boy:" | b.id | "is dating Girl" | partner | "with ccode" | b.ccode | endl;
    8080        boyck[b.id] = partner;
    8181} // Boy main
     
    9292        Boy  *boys[NoOfPairs];
    9393
    94         random_seed( /*getpid()*/ 103 );
     94        random_seed( getpid() );
    9595
    9696        for ( unsigned int i = 0; i < NoOfPairs; i += 1 ) {
  • src/tests/concurrent/examples/matrixSum.c

    r16988e8 ra85e44c  
    1111// Created On       : Mon Oct  9 08:29:28 2017
    1212// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Tue Dec  5 22:56:46 2017
    14 // Update Count     : 4
     13// Last Modified On : Sun Oct 29 21:08:48 2017
     14// Update Count     : 2
    1515//
    1616
     
    2929}
    3030
    31 void main( Adder & adder ) with( adder ) {
    32     *subtotal = 0;
    33     for ( int c = 0; c < cols; c += 1 ) {
    34                 *subtotal += row[c];
     31void main( Adder & adder ) {
     32    *adder.subtotal = 0;
     33    for ( int c = 0; c < adder.cols; c += 1 ) {
     34                *adder.subtotal += adder.row[c];
    3535    } // for
    3636}
  • src/tests/coroutine/fmtLines.c

    r16988e8 ra85e44c  
    1010// Created On       : Sun Sep 17 21:56:15 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec  5 21:56:35 2017
    13 // Update Count     : 38
     12// Last Modified On : Sun Oct  1 11:57:19 2017
     13// Update Count     : 34
    1414//
    1515
     
    2626}
    2727
    28 void ^?{}( Format & fmt ) with( fmt ) {
    29         if ( g != 0 || b != 0 ) sout | endl;
     28void ^?{}( Format & fmt ) {
     29        if ( fmt.g != 0 || fmt.b != 0 ) sout | endl;
    3030}
    3131
    32 void main( Format & fmt ) with( fmt ) {
     32void main( Format & fmt ) {
    3333        for ( ;; ) {                                                                            // for as many characters
    34                 for ( g = 0; g < 5; g += 1 ) {                                  // groups of 5 blocks
    35                         for ( b = 0; b < 4; b += 1 ) {                          // blocks of 4 characters
     34                for ( fmt.g = 0; fmt.g < 5; fmt.g += 1 ) {              // groups of 5 blocks
     35                        for ( fmt.b = 0; fmt.b < 4; fmt.b += 1 ) {      // blocks of 4 characters
    3636                                for ( ;; ) {                                                    // for newline characters
    3737                                        suspend();
    38                                         if ( ch != '\n' ) break;                        // ignore newline
     38                                        if ( fmt.ch != '\n' ) break;            // ignore newline
    3939                                } // for
    40                                 sout | ch;                                                              // print character
     40                                sout | fmt.ch;                                                  // print character
    4141                        } // for
    4242                        sout | "  ";                                                            // print block separator
  • src/tests/coroutine/prodcons.c

    r16988e8 ra85e44c  
    1010// Created On       : Mon Sep 18 12:23:39 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec  5 22:40:55 2017
    13 // Update Count     : 46
     12// Last Modified On : Mon Oct 30 23:06:05 2017
     13// Update Count     : 42
    1414//
    1515
     
    2424
    2525coroutine Prod {
    26         Cons * c;
     26        Cons *c;
    2727        int N, money, receipt;
    2828};
    29 void main( Prod & prod ) with( prod ) {                                 // starter ::main
     29void main( Prod & prod ) {                                                              // starter ::main
    3030        // 1st resume starts here
    31         for ( int i = 0; i < N; i += 1 ) {
     31        for ( int i = 0; i < prod.N; i += 1 ) {
    3232                int p1 = random( 100 );
    3333                int p2 = random( 100 );
    3434                sout | p1 | " " | p2 | endl;
    35                 int status = delivery( *c, p1, p2 );
    36                 sout | " $" | money | endl;
     35                int status = delivery( *prod.c, p1, p2 );
     36                sout | " $" | prod.money | endl;
    3737                sout | status | endl;
    38                 receipt += 1;
     38                prod.receipt += 1;
    3939        }
    40         stop( *c );
     40        stop( *prod.c );
    4141        sout | "prod stops" | endl;
    4242}
     
    6464}
    6565void ^?{}( Cons & cons ) {}
    66 void main( Cons & cons ) with( cons ) {                                 // starter prod
     66void main( Cons & cons ) {                                                              // starter prod
    6767        // 1st resume starts here
    6868        int money = 1, receipt;
    69         for ( ; ! done; ) {
    70                 sout | p1 | " " | p2 | endl;
     69        for ( ; ! cons.done; ) {
     70                sout | cons.p1 | " " | cons.p2 | endl;
    7171                sout | " $" | money | endl;
    72                 status += 1;
    73                 receipt = payment( *p, money );
     72                cons.status += 1;
     73                receipt = payment( *cons.p, money );
    7474                sout | " #" | receipt | endl;
    7575                money += 1;
Note: See TracChangeset for help on using the changeset viewer.