Пример #1
0
static int	check_b(int *pile1, int *pile2, char **buf, int r[3][5])
{
	if (r[0][2] > 1 && r[2][0])
		return ((my_sx(pile2, r[0][2])
				&& !ff("SWAP B", "sb ", buf, r[0])) ? 0 : 1);
	else if (r[0][2] > 1 && r[2][1])
	{
		if (!r[1][0] && r[1][1])
			return ((my_rr(pile1, pile2, r[0][1], r[0][2])
					&& !ff("ROTATE C", "rr ", buf, r[0])) ? 0 : 1);
			return ((my_rx(pile2, r[0][2])
					&& !ff("ROTATE B", "rb ", buf, r[0])) ? 0 : 1);
	}
	else if (r[0][2] > 1 && r[2][2])
	{
		if (!r[1][0] && r[1][2])
			return ((my_rrr(pile1, pile2, r[0][1], r[0][2])
					&& !ff("REVERSE C", "rrr ", buf, r[0])) ? 0 : 1);
			return ((my_rrx(pile2, r[0][2])
					&& !ff("REVERSE B", "rrb ", buf, r[0])) ? 0 : 1);
	}
	else if ((r[0][1] && r[0][3] != r[0][1]) || !r[0][2])
		return ((my_px(pile2, pile1, r[0][2]++, r[0][1]--)
				&& !ff("PUSH B", "pb ", buf, r[0])) ? 0 : 1);
	else
		return ((my_px(pile1, pile2, r[0][1]++, r[0][2]--)
				&& !ff("PUSH A", "pa ", buf, r[0])) ? 0 : 1);
}
Пример #2
0
static int	check_a(int *pile1, int *pile2, char **buf, int r[3][5])
{
	if (r[0][1] > 1 && r[1][0] && !(r[1][1] || r[1][2]))
	{
		if (r[0][2] > 1 && r[2][0])
			return ((my_ss(pile1, pile2, r[0][1], r[0][2])
					&& !ff("SWAP C", "ss ", buf, r[0])) ? 0 : 1);
			return ((my_sx(pile1, r[0][1])
					&& !ff("SWAP A", "sa ", buf, r[0])) ? 0 : 1);
	}
	else if (r[0][1] > 1 && r[1][1])
	{
		if (r[0][2] > 1 && !r[2][0] && r[2][1])
			return ((my_rr(pile1, pile2, r[0][1], r[0][2])
					&& !ff("ROTATE C", "rr ", buf, r[0])) ? 0 : 1);
			return ((my_rx(pile1, r[0][1])
					&& !ff("ROTATE A", "ra ", buf, r[0])) ? 0 : 1);
	}
	else if (r[0][1] > 1 && r[1][2])
	{
		if (r[0][2] > 1 && !r[2][0] && r[2][2])
			return ((my_rrr(pile1, pile2, r[0][1], r[0][2])
					&& !ff("REVERSE C", "rrr ", buf, r[0])) ? 0 : 1);
			return ((my_rrx(pile1, r[0][1])
					&& !ff("REVERSE A", "rra ", buf, r[0])) ? 0 : 1);
	}
	return (-1);
}
Пример #3
0
static int my_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
	int i;
	printk(KERN_INFO "my_hard_start_xmit(%s)\n", dev->name);

	dev->trans_start = jiffies;
	printk(KERN_INFO "Sending packet :\n");

	/* print out 16 bytes per line */
	for (i = 0; i < skb->len; ++i) {
		if ((i & 0xf) == 0)
			printk(KERN_INFO "\n  ");
		printk(KERN_INFO "%02x ", skb->data[i]);
	}
	printk(KERN_INFO "\n");

	++stats->tx_packets;

	/* loopback it */
	my_rx(skb, dev);

	return 0;
}
Пример #4
0
int	my_rr(int *pile1, int *pile2, int size1, int size2)
{
    return (my_rx(pile1, size1) && my_rx(pile2, size2));
}