Solaris Standards Conformance

Today with the launch of OpenSolaris I thought I would talk about something that doesn't seem to get a lot of notoriety (ie. standards work inside Sun).

One of the things I worked on during Solaris 10's development cycle was the Solaris AGR/UNIX200x/SUSv3 Standards Conformance project. The project was tasked with delivering the ON (OS/Networking) portions of a certifiable/brandable Solaris Product as defined by the work performed by the AGR (Austin Group Revision) Standards Working Group.

This work is also sometimes identified as UNIX200x and SUSv3. The formal standard is known by the following:


This standard requires conformance to the ISO/IEC 9899:1999 C programming Language standard.

My contribution to this project was specifically in the networking area. It involved making changes to various header files so that Solaris conforms to the above listed specifications. While I didn't add alot of new exciting code as part of this project, I did get to add a completely new system call (See Erick Schrock's treatise on how to do this properly). Prior to Solaris 10, there was no sockatmark() system call. Since the Open Group Base Specification requires this, I needed to add it to Solaris.

The function itself is trivial, it is used to determine whether a socket is at the out-of-band mark. On Solaris, before this was implemented, a developer would just issue an ioctl call using the SIOCATMARK request. This is essentially what sockatmark() does. I made it a wrapper system call that calls ioctl with the proper request.

/\*
 \* Determine whether the socket is at the out-of-band
 \* data mark.
 \*/
int
_sockatmark(int sock)
{
        int val;

        if (ioctl(sock, SIOCATMARK, &val) == -1)
                return (-1);
        return (val);
}

Not ground breaking or sexy but part of a bigger picture nonetheless.

There were many contributors to this project (ON is rather large in terms of the sheer amount of code contained therein) and it was a great team to work on and with. We managed to complete all of the required work and Solaris 10 is branded for UNIX03 on all architectures that Solaris 10 supports (x86,sparc,opteron). Of course, since the next version of Solaris starts out from where Solaris 10 finished, the next version should be branded as well once it ships.

Technorati Tag:
Technorati Tag:

Comments:

Post a Comment:
  • HTML Syntax: NOT allowed
About

glagasse

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today