为了能向服务器进程发送控制消息,我们需要修改enter函数,使其支持接收控制消息并进行相应的处理。
首先,我们需要添加一个参数来表示控制消息的队列。这个队列将用于发送控制消息。然后,在发送普通消息之前,我们需要检查是否有控制消息需要发送。如果有,我们需要创建一个新的q_entry结构体来表示控制消息,并将其发送到队列中。
下面是修改后的enter函数的代码:
```c
int enter(char *objname, int priority, int control_qid) {
int len, s_qid;
struct q_entry s_entry; //structure to hold message
//validate name length, priority level
if ((len=strlen(objname))>MAXOBN) {
warn("name too long");
return(-1);
}
if (priority>MAXPRIOR||priority<0) {
warn("invalid priority level");
return(-1);
}
//initialize message