Lines Matching refs:sccb

109 static uint16_t write_event_length_check(SCCB *sccb)  in write_event_length_check()  argument
114 WriteEventData *wed = (WriteEventData *) sccb; in write_event_length_check()
117 for (slen = sccb_data_len(sccb); slen > 0; slen -= elen) { in write_event_length_check()
131 EventBufferHeader *event_buf, SCCB *sccb) in handle_write_event_buf() argument
154 static uint16_t handle_sccb_write_events(SCLPEventFacility *ef, SCCB *sccb) in handle_sccb_write_events() argument
160 WriteEventData *wed = (WriteEventData *) sccb; in handle_sccb_write_events()
166 for (slen = sccb_data_len(sccb); slen > 0; slen -= elen) { in handle_sccb_write_events()
174 rc = handle_write_event_buf(ef, event_buf, sccb); in handle_sccb_write_events()
181 static void write_event_data(SCLPEventFacility *ef, SCCB *sccb) in write_event_data() argument
183 if (sccb->h.function_code != SCLP_FC_NORMAL_WRITE) { in write_event_data()
184 sccb->h.response_code = cpu_to_be16(SCLP_RC_INVALID_FUNCTION); in write_event_data()
187 if (be16_to_cpu(sccb->h.length) < 8) { in write_event_data()
188 sccb->h.response_code = cpu_to_be16(SCLP_RC_INSUFFICIENT_SCCB_LENGTH); in write_event_data()
192 sccb->h.response_code = cpu_to_be16(write_event_length_check(sccb)); in write_event_data()
195 if (sccb->h.response_code == be16_to_cpu(SCLP_RC_NORMAL_COMPLETION)) { in write_event_data()
196 sccb->h.response_code = in write_event_data()
197 cpu_to_be16(handle_sccb_write_events(ef, sccb)); in write_event_data()
201 static uint16_t handle_sccb_read_events(SCLPEventFacility *ef, SCCB *sccb, in handle_sccb_read_events() argument
211 ReadEventData *red = (ReadEventData *) sccb; in handle_sccb_read_events()
215 slen = sccb_data_len(sccb); in handle_sccb_read_events()
233 if (sccb->h.control_mask[2] & SCLP_VARIABLE_LENGTH_RESPONSE) { in handle_sccb_read_events()
235 sccb->h.control_mask[2] &= ~SCLP_VARIABLE_LENGTH_RESPONSE; in handle_sccb_read_events()
237 sccb->h.length = cpu_to_be16(SCCB_SIZE - slen); in handle_sccb_read_events()
253 static void read_event_data(SCLPEventFacility *ef, SCCB *sccb) in read_event_data() argument
258 ReadEventData *red = (ReadEventData *) sccb; in read_event_data()
260 if (be16_to_cpu(sccb->h.length) != SCCB_SIZE) { in read_event_data()
261 sccb->h.response_code = cpu_to_be16(SCLP_RC_INSUFFICIENT_SCCB_LENGTH); in read_event_data()
265 switch (sccb->h.function_code) { in read_event_data()
267 sccb->h.response_code = cpu_to_be16( in read_event_data()
268 handle_sccb_read_events(ef, sccb, ef->receive_mask)); in read_event_data()
279 sccb->h.response_code = in read_event_data()
282 sccb->h.response_code = cpu_to_be16( in read_event_data()
283 handle_sccb_read_events(ef, sccb, sclp_active_selection_mask)); in read_event_data()
287 sccb->h.response_code = cpu_to_be16(SCLP_RC_INVALID_FUNCTION); in read_event_data()
291 static void write_event_mask(SCLPEventFacility *ef, SCCB *sccb) in write_event_mask() argument
293 WriteEventMask *we_mask = (WriteEventMask *) sccb; in write_event_mask()
299 sccb->h.response_code = cpu_to_be16(SCLP_RC_INVALID_MASK_LENGTH); in write_event_mask()
323 sccb->h.response_code = cpu_to_be16(SCLP_RC_NORMAL_COMPLETION); in write_event_mask()
336 static void command_handler(SCLPEventFacility *ef, SCCB *sccb, uint64_t code) in command_handler() argument
340 read_event_data(ef, sccb); in command_handler()
343 write_event_data(ef, sccb); in command_handler()
346 write_event_mask(ef, sccb); in command_handler()