INF1018 - Software Básico

Aulas de Laboratório

Corotinas (aquecimento)

Nesse laboratório vamos começar a explorar o uso de corotinas.

  1. Para começar, pegue os arquivos: e coloque em um diretório novo chamado lab15.

  2. Observe a interface da biblioteca de corotinas (em corotinas.h). Veja que a função usada para criar uma corotina deve receber um inteiro como argumento e retornar um inteiro como resultado.

    Crie agora um programa C que utilize a biblioteca de corotinas para criar duas corotinas bem simples, chamadas "ping" e "pong". Cada uma delas, quando ativada, imprime "ping" ou "pong", respectivamente, e o valor recebido como parâmetro. Após imprimir esse valor, ela deve suspender, retornando para seu "chamador" o valor de um contador (uma variável local).

    O programa principal deve ter um loop onde ativa alternadamente cada uma dessas corotinas (cada passada no loop ativa uma delas), passando para essa corotina o valor do contador do loop. Ao receber de volta o controle, o programa deve imprimir o valor retornado por coro_resume. Uma saída exemplo desse programa seria:

    ping 0
    main: 0
    pong 1
    main: 0
    ping 2
    main: 1
    pong 3
    main: 1
    ...
    
    obs: Para compilar seu programa, use
     
      gcc -m32 -Wa,--execstack -o meuprog meuprog.c core.s corotinas.c