コード例 #1
0
ファイル: main.c プロジェクト: AceKatz/Assignment4
void
server_task_queue(int accept_fd)
{
    //5!  Work here!
    int i;
    pthread_t *threads = malloc(sizeof(pthread_t) * MAX_CONCURRENCY);
    for (i = 0 ; i < MAX_CONCURRENCY ; i++)
        pthread_create(&threads[i], NULL, (void *)&pthread_handle, NULL);
    printf("ALL THREADS CREATED\n");
    for(;;) 
    {
        int fd = server_accept(accept_fd);
        put_request(req_create((void*)fd));
        printf("ADDING STUFF!\n");
    }
    
	return;
}
コード例 #2
0
ファイル: ft245r.c プロジェクト: arnonh/myelin-matrix-display
static int ft245r_paged_load_flash(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, 
                             int page_size, int n_bytes)
{
  unsigned long    i,j,n;
  //int rc;
  int addr,addr_save,buf_pos;
  int req_count = 0;
  char buf[FT245R_FRAGMENT_SIZE+1];

  addr = 0;
  for (i=0; i<n_bytes; ) {
     buf_pos = 0;
     addr_save = addr;
     for (j=0; j< FT245R_FRAGMENT_SIZE/8/FT245R_CYCLES/4; j++) {
	if (i >= n_bytes) break;
        buf_pos += set_data(buf+buf_pos, (addr & 1)?0x28:0x20 ); 
        buf_pos += set_data(buf+buf_pos, (addr >> 9) & 0xff ); 
        buf_pos += set_data(buf+buf_pos, (addr >> 1) & 0xff );
        buf_pos += set_data(buf+buf_pos, 0);
	addr ++;
	i++;
     }
     if (i >= n_bytes) {
        buf[buf_pos++] = 0; // sck down
     }
     n = j;
     ft245r_send(pgm, buf, buf_pos);
     put_request(addr_save, buf_pos, n);
     req_count++;
     if (req_count > REQ_OUTSTANDINGS)
        do_request(pgm, m);
     report_progress(i, n_bytes, NULL);
  }
  while (do_request(pgm, m))
	  ;
  return 0;
}
コード例 #3
0
ファイル: ft245r.c プロジェクト: dreimers/avrdude
static int ft245r_paged_load_flash(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
                                   unsigned int page_size, unsigned int addr,
                                   unsigned int n_bytes) {
    unsigned long    i,j,n;
    int addr_save,buf_pos;
    int req_count = 0;
    unsigned char buf[FT245R_FRAGMENT_SIZE+1];

    for (i=0; i<n_bytes; ) {
        buf_pos = 0;
        addr_save = addr;
        for (j=0; j< FT245R_FRAGMENT_SIZE/8/FT245R_CYCLES/4; j++) {
            if (i >= n_bytes) break;
            buf_pos += set_data(pgm, buf+buf_pos, (addr & 1)?0x28:0x20 );
            buf_pos += set_data(pgm, buf+buf_pos, (addr >> 9) & 0xff );
            buf_pos += set_data(pgm, buf+buf_pos, (addr >> 1) & 0xff );
            buf_pos += set_data(pgm, buf+buf_pos, 0);
            addr ++;
            i++;
        }
        if (i >= n_bytes) {
            ft245r_out = SET_BITS_0(ft245r_out,pgm,PIN_AVR_SCK,0); // sck down
            buf[buf_pos++] = ft245r_out;
        }
        n = j;
        ft245r_send(pgm, buf, buf_pos);
        put_request(addr_save, buf_pos, n);
        req_count++;
        if (req_count > REQ_OUTSTANDINGS)
            do_request(pgm, m);

    }
    while (do_request(pgm, m))
        ;
    return 0;
}
コード例 #4
0
ファイル: ft245r.c プロジェクト: arnonh/myelin-matrix-display
static int ft245r_paged_write_flash(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, 
                                    int page_size, int n_bytes)
{
  unsigned int    i,j;
  int addr,addr_save,buf_pos,do_page_write,req_count;
  char buf[FT245R_FRAGMENT_SIZE+1+128];

  req_count = 0;
  addr = 0;
  for (i=0; i<n_bytes; ) {
     addr_save = addr;
     buf_pos = 0;
     do_page_write = 0;
     for (j=0; j< FT245R_FRAGMENT_SIZE/8/FT245R_CYCLES/4; j++) {
        buf_pos += set_data(buf+buf_pos, (addr & 1)?0x48:0x40 ); 
        buf_pos += set_data(buf+buf_pos, (addr >> 9) & 0xff ); 
        buf_pos += set_data(buf+buf_pos, (addr >> 1) & 0xff );
        buf_pos += set_data(buf+buf_pos, m->buf[i]);
	addr ++;
	i++;
	if ( (m->paged) &&
             (((i % m->page_size) == 0) || (i == n_bytes))) {
		do_page_write = 1;
		break;
	}
     }
#if defined(USE_INLINE_WRITE_PAGE)
     if (do_page_write) {
        int addr_wk = addr_save - (addr_save % m->page_size);
        /* If this device has a "load extended address" command, issue it. */
	if (m->op[AVR_OP_LOAD_EXT_ADDR]) {
	    unsigned char cmd[4];
	    OPCODE *lext = m->op[AVR_OP_LOAD_EXT_ADDR];

	    memset(cmd, 0, 4);
	    avr_set_bits(lext, cmd);
	    avr_set_addr(lext, cmd, addr_wk/2);
            buf_pos += set_data(buf+buf_pos, cmd[0]);
            buf_pos += set_data(buf+buf_pos, cmd[1]);
            buf_pos += set_data(buf+buf_pos, cmd[2]);
            buf_pos += set_data(buf+buf_pos, cmd[3]);
	}
        buf_pos += set_data(buf+buf_pos, 0x4C); /* Issue Page Write */
        buf_pos += set_data(buf+buf_pos,(addr_wk >> 9) & 0xff); 
        buf_pos += set_data(buf+buf_pos,(addr_wk >> 1) & 0xff); 
        buf_pos += set_data(buf+buf_pos, 0);
     }
#endif
     if (i >= n_bytes) {
        buf[buf_pos++] = 0; // sck down
     }
     ft245r_send(pgm, buf, buf_pos);
     put_request(addr_save, buf_pos, 0);
     //ft245r_sync(pgm);
#if 0
fprintf(stderr, "send addr 0x%04x bufsize %d [%02x %02x] page_write %d\n",
		addr_save,buf_pos,
		extract_data_out(buf , (0*4 + 3) ),
		extract_data_out(buf , (1*4 + 3) ),
		do_page_write);
#endif
     req_count++;
     if (req_count > REQ_OUTSTANDINGS)
        do_request(pgm, m);
     if (do_page_write) {
#if defined(USE_INLINE_WRITE_PAGE)
        while (do_request(pgm, m))
	     ;
        usleep(m->max_write_delay);
#else
        int addr_wk = addr_save - (addr_save % m->page_size);
	int rc;
        while (do_request(pgm, m))
	     ;
        rc = avr_write_page(pgm, p, m, addr_wk);
        if (rc != 0) {
	  return -2;
        }
#endif
        req_count = 0;
     }
     report_progress(i, n_bytes, NULL);
  }
  while (do_request(pgm, m))
	  ;
  return i;
}