void putchar(int x) { char c = x; if (apbus) apcall_write(1, &c, 1); else rom_write(1, &c, 1); }
/* * Send a packet. The ether header is already there. * Return the length sent (or -1 on error). */ ssize_t netif_put(struct iodesc *desc, void *pkt, size_t len) { struct romdev *pd; ssize_t rv; size_t sendlen; pd = (struct romdev *)desc->io_netif; #ifdef NETIF_DEBUG if (netif_debug) { struct ether_header *eh; printf("netif_put: desc=0x%x pkt=0x%x len=%d\n", desc, pkt, len); eh = pkt; printf("dst: %s ", ether_sprintf(eh->ether_dhost)); printf("src: %s ", ether_sprintf(eh->ether_shost)); printf("type: 0x%x\n", eh->ether_type & 0xFFFF); } #endif sendlen = len; if (sendlen < 60) { sendlen = 60; #ifdef NETIF_DEBUG printf("netif_put: length padded to %d\n", sendlen); #endif } rv = apcall_write(pd->fd, pkt, sendlen); #ifdef NETIF_DEBUG if (netif_debug) printf("netif_put: xmit returned %d\n", rv); #endif return rv; }