Example #1
0
void be_connect(void *data, int fd)
{
    printf("connected %s %d\n", (char *)data, fd);
    epdata_t *epd = NULL;
    epd = smp_malloc(sizeof(epdata_t));

    if(!epd) {
        close(fd);
        return;
    }

    epd->fd = fd;
    epd->stime = now;

    epd->se_ptr = se_add(loop_fd, fd, epd);
    epd->timeout_ptr = add_timeout(epd, 1000, timeout_handle);

    epd->out_buf = smp_malloc(1024);
    epd->out_buf_len = sprintf(epd->out_buf,
                               "GET / HTTP/1.1\r\nUser-Agent: curl/7.24.0\r\nHost: www.163.com\r\nAccept: */*\r\n\r\n");
    epd->out_buf_sended = 0;

    se_be_read(epd->se_ptr, client_be_write);
    client_be_write(epd->se_ptr);
}
Example #2
0
static void be_accept(int client_fd, struct in_addr client_addr)
{
    if(!set_nonblocking(client_fd, 1)) {
        close(client_fd);
        return;
    }

    epdata_t *epd = NULL;
    epd = smp_malloc(sizeof(epdata_t));

    if(!epd) {
        close(client_fd);
        return;
    }

    epd->fd = client_fd;
    epd->client_addr = client_addr;
    epd->stime = now;

    epd->se_ptr = se_add(loop_fd, client_fd, epd);
    epd->timeout_ptr = add_timeout(epd, 1000, timeout_handle);

    se_be_read(epd->se_ptr, be_read);
}
Example #3
0
void
cpuattach(struct device *parent, struct device *dev, void *aux)
{
	struct cpu_info *ci;
	int cpuno = dev->dv_unit;
	int isr16k = 0;
	int displayver;

	if (cpuno == 0) {
		ci = &cpu_info_primary;
#ifdef MULTIPROCESSOR
		ci->ci_flags |= CPUF_RUNNING | CPUF_PRESENT | CPUF_PRIMARY;
		cpuset_add(&cpus_running, ci);
#endif
	}
#ifdef MULTIPROCESSOR
	else {
		ci = (struct cpu_info *)smp_malloc(sizeof(*ci));
		if (ci == NULL)
			panic("unable to allocate cpu_info\n");
		bzero((char *)ci, sizeof(*ci));
		ci->ci_next = cpu_info_list->ci_next;
		cpu_info_list->ci_next = ci;
		ci->ci_flags |= CPUF_PRESENT;
		cpu_info[cpuno] = ci;
	}
#endif
	ci->ci_self = ci;
	ci->ci_cpuid = cpuno;
	ci->ci_dev = dev;

	printf(": ");

	displayver = 1;
	switch (sys_config.cpu[cpuno].type) {
	case MIPS_R4000:
		if (CpuPrimaryInstCacheSize == 16384)
			printf("MIPS R4400 CPU");
		else
			printf("MIPS R4000 CPU");
		break;
	case MIPS_R5000:
		printf("MIPS R5000 CPU");
		break;
	case MIPS_R10000:
		printf("MIPS R10000 CPU");
		break;
	case MIPS_R12000:
		printf("MIPS R12000 CPU");
		break;
	case MIPS_R14000:
		if (sys_config.cpu[cpuno].vers_maj > 2) {
			sys_config.cpu[cpuno].vers_maj -= 2;
			isr16k = 1;
		}
		printf("R1%d000 CPU", isr16k ? 6 : 4);
		break;
	case MIPS_R4200:
		printf("NEC VR4200 CPU (ICE)");
		break;
	case MIPS_R4300:
		printf("NEC VR4300 CPU");
		break;
	case MIPS_R4100:
		printf("NEC VR41xx CPU");
		break;
	case MIPS_R4600:
		printf("QED R4600 Orion CPU");
		break;
	case MIPS_R4700:
		printf("QED R4700 Orion CPU");
		break;
	case MIPS_RM52X0:
		printf("PMC-Sierra RM52X0 CPU");
		break;
	case MIPS_RM7000:
		if (sys_config.cpu[cpuno].vers_maj < 2)
			printf("PMC-Sierra RM7000 CPU");
		else
			printf("PMC-Sierra RM7000A CPU");
		cpu_is_rm7k++;
		break;
	case MIPS_RM9000:
		printf("PMC-Sierra RM9000 CPU");
		break;
	case MIPS_LOONGSON2:
		printf("STC Loongson2%c CPU",
		    'C' + sys_config.cpu[cpuno].vers_min);
		displayver = 0;
		break;
	default:
		printf("Unknown CPU type (0x%x)",sys_config.cpu[cpuno].type);
		break;
	}
	if (displayver != 0)
		printf(" rev %d.%d", sys_config.cpu[cpuno].vers_maj,
		    sys_config.cpu[cpuno].vers_min);
	printf(" %d MHz, ", sys_config.cpu[cpuno].clock / 1000000);

	displayver = 1;
	switch (sys_config.cpu[cpuno].fptype) {
	case MIPS_SOFT:
		printf("Software FP emulation");
		break;
	case MIPS_R4000:
		printf("R4010 FPC");
		break;
	case MIPS_R10000:
		printf("R10000 FPU");
		break;
	case MIPS_R12000:
		printf("R12000 FPU");
		break;
	case MIPS_R14000:
		printf("R1%d000 FPU", isr16k ? 6 : 4);
		break;
	case MIPS_R4200:
		printf("VR4200 FPC (ICE)");
		break;
	case MIPS_R4600:
		printf("R4600 Orion FPC");
		break;
	case MIPS_R4700:
		printf("R4700 Orion FPC");
		break;
	case MIPS_R5000:
		printf("R5000 based FPC");
		break;
	case MIPS_RM52X0:
		printf("RM52X0 FPC");
		break;
	case MIPS_RM7000:
		printf("RM7000 FPC");
		break;
	case MIPS_RM9000:
		printf("RM9000 FPC");
		break;
	case MIPS_LOONGSON2:
		printf("STC Loongson2%c FPU",
		    'C' + sys_config.cpu[cpuno].fpvers_min);
		displayver = 0;
		break;
	default:
		printf("Unknown FPU type (0x%x)", sys_config.cpu[cpuno].fptype);
		break;
	}
	if (displayver != 0)
		printf(" rev %d.%d", sys_config.cpu[cpuno].fpvers_maj,
		    sys_config.cpu[cpuno].fpvers_min);
	printf("\n");

	printf("cpu%d: cache L1-I %dKB", cpuno, CpuPrimaryInstCacheSize / 1024);
	printf(" D %dKB ", CpuPrimaryDataCacheSize / 1024);

	switch (CpuNWayCache) {
	case 2:
		printf("2 way");
		break;
	case 4:
		printf("4 way");
		break;
	default:
		printf("1 way");
		break;
	}

	if (CpuSecondaryCacheSize != 0) {
		switch (sys_config.cpu[cpuno].type) {
		case MIPS_R10000:
		case MIPS_R12000:
		case MIPS_R14000:
			printf(", L2 %dKB 2 way", CpuSecondaryCacheSize / 1024);
			break;
		case MIPS_RM7000:
		case MIPS_RM9000:
		case MIPS_LOONGSON2:
			printf(", L2 %dKB 4 way", CpuSecondaryCacheSize / 1024);
			break;
		default:
			printf(", L2 %dKB direct", CpuSecondaryCacheSize / 1024);
			break;
		}
	}
	if (CpuTertiaryCacheSize != 0)
		printf(", L3 %dKB direct", CpuTertiaryCacheSize / 1024);
	printf("\n");

#ifdef DEBUG
	printf("cpu%d: Setsize %d:%d\n", cpuno,
	    CpuPrimaryInstSetSize, CpuPrimaryDataSetSize);
	printf("cpu%d: Alias mask 0x%x\n", cpuno, CpuCacheAliasMask);
	printf("cpu%d: Config Register %x\n", cpuno, CpuConfigRegister);
	printf("cpu%d: Cache type %x\n", cpuno, CpuCacheType);
	if (sys_config.cpu[cpuno].fptype == MIPS_RM7000) {
		u_int tmp = CpuConfigRegister;

		printf("cpu%d: ", cpuno);
		printf("K0 = %1d  ",0x7 & tmp);
		printf("SE = %1d  ",0x1 & (tmp>>3));
		printf("DB = %1d  ",0x1 & (tmp>>4));
		printf("IB = %1d\n",0x1 & (tmp>>5));
		printf("cpu%d: ", cpuno);
		printf("DC = %1d  ",0x7 & (tmp>>6));
		printf("IC = %1d  ",0x7 & (tmp>>9));
		printf("TE = %1d  ",0x1 & (tmp>>12));
		printf("EB = %1d\n",0x1 & (tmp>>13));
		printf("cpu%d: ", cpuno);
		printf("EM = %1d  ",0x1 & (tmp>>14));
		printf("BE = %1d  ",0x1 & (tmp>>15));
		printf("TC = %1d  ",0x1 & (tmp>>17));
		printf("EW = %1d\n",0x3 & (tmp>>18));
		printf("cpu%d: ", cpuno);
		printf("TS = %1d  ",0x3 & (tmp>>20));
		printf("EP = %1d  ",0xf & (tmp>>24));
		printf("EC = %1d  ",0x7 & (tmp>>28));
		printf("SC = %1d\n",0x1 & (tmp>>31));
	}