Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Apr 2001 21:20:03 -0700 (PDT)
From:      Cyrille Lefevre <root@gits.dyndns.org>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/25866: more than 256 ptys, up to 1302 ptys.
Message-ID:  <200104040420.f344K3s97406@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/25866; it has been noted by GNATS.

From: Cyrille Lefevre <root@gits.dyndns.org>
To: freebsd-gnats-submit@FreeBSD.org
Cc:  
Subject: Re: kern/25866: more than 256 ptys, up to 1302 ptys.
Date: Wed, 4 Apr 2001 06:10:40 +0200 (CEST)

 the following patch correct a typo in MAKEDEV.
 
 Index: /usr/src/etc/MAKEDEV
 ===================================================================
 RCS file: /home/ncvs/src/etc/MAKEDEV,v
 retrieving revision 1.243.2.28
 diff -u -r1.243.2.28 MAKEDEV
 --- /usr/src/etc/MAKEDEV	2001/03/27 22:14:53	1.243.2.28
 +++ /usr/src/etc/MAKEDEV	2001/04/03 10:39:38
 @@ -231,6 +231,19 @@
    echo $(((($1 >> 8) << 16) | ($1 % 256)))
  }
  
 +# Convert pty (class,instance) to minor number
 +# Handle pty minor numbers greater than 256
 +ptyminor()
 +{
 +	echo $(( (( ($1 + $2) &~ 255) << 8) | (($1 + $2) & 255) ))
 +}
 +
 +# *MUST* be the same as in sys/kern/tty_pty.c and lib/libutil/pty.c
 +ptyclassnames=pqrstuwxyzPQRSTUVWXYZ
 +ptyinstancenames=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
 +nptyclass=${#ptyclassnames}
 +nptyinstance=${#ptyinstancenames}
 +
  # Raw partition for disks
  dkrawpart=2
  
 @@ -707,34 +720,26 @@
  	done	
  	;;
  pty*)
 -	class=`expr $i : 'pty\(.*\)'`
 -	case $class in
 -	0) offset=0 name=p;;
 -	1) offset=32 name=q;;
 -	2) offset=64 name=r;;
 -	3) offset=96 name=s;;
 -# Note that xterm (at least) only look at p-s.
 -	4) offset=128 name=P;;
 -	5) offset=160 name=Q;;
 -	6) offset=192 name=R;;
 -	7) offset=224 name=S;;
 -	# This still leaves [tuTU].
 -	*) echo bad unit for pty in: $i;;
 -	esac
  	umask 0
 -	case $class in
 -	0|1|2|3|4|5|6|7)
 +	class=`expr $i : 'pty\(.*\)'`
 +	if [ -n "$class" -a "$class" -lt $nptyclass ]; then
 +		name=$(echo $ptyclassnames |
 +		       dd bs=1 skip=$class count=1 2>/dev/null)
 +		offset=$(($class * $nptyinstance))
  		i=0
 -		while [ $i -lt 32 ]; do
 +		while [ $i -lt $nptyinstance ]; do
  #			This was an awk substr() before.
 -			c=$(echo 0123456789abcdefghijklmnopqrstuv |
 +			c=$(echo $ptyinstancenames |
  			    dd bs=1 skip=$i count=1 2>/dev/null)
 -			mknod tty$name$c c 5 $(($offset + $i))
 -			mknod pty$name$c c 6 $(($offset + $i))
 +			minor=$(ptyminor $offset $i)
 +			rm -f tty$name$c pty$name$c
 +			mknod tty$name$c c 5 $minor
 +			mknod pty$name$c c 6 $minor
  			i=$(($i + 1))
  		done
 -		;;
 -	esac
 +	else
 +		echo bad unit for pty in: $i
 +	fi
  	umask 77
  	;;
  
 Cyrille.
 --
 home: mailto:clefevre@poboxes.com   UNIX is user-friendly; it's just particular
 work: mailto:Cyrille.Lefevre@edf.fr   about who it chooses to be friends with. 

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200104040420.f344K3s97406>